home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_400 / 422_01 / libcf / longjmp.asm < prev    next >
Encoding:
Assembly Source File  |  1994-03-27  |  499 b   |  25 lines

  1. *
  2. * Set a long jump: setjmp(int jaddr[2])
  3. *
  4. setjmp    LDI    S+        Get return address
  5.     TSA            Get stack pointer
  6.     PUSHI            Resave return
  7.     LDI    2,S        Get buffer
  8.     ST    I        Write SP
  9.     LD    ,S        Get return address
  10.     ST    2,I        Write to buffer
  11.     CLR            Return zero
  12.     RET
  13. *
  14. * Perform a long jump: longjmp(int jaddr[2], int rc)
  15. *
  16. longjmp    LD    2,S        Get value
  17.     ST    ?temp        Save for later
  18.     LDI    4,S        Get buffer
  19.     LD    I        Get SP
  20.     LDI    2,I        Get RETADDR
  21.     TAS            Set SP
  22.     PUSHI            Save ret address
  23.     LD    ?temp        Restore value
  24.     RET
  25.