home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Distributions / ucb / 2bsd.tar.gz / 2bsd.tar / upgrade / libretro / setjmp.s < prev    next >
Encoding:
Text File  |  1979-04-19  |  487 b   |  40 lines

  1. / C library -- setjmp, longjmp
  2.  
  3. /    longjmp(a)
  4. / will generate a "return" from
  5. / the last call to
  6. /    setjmp(a)
  7. / by restoring sp, r5, pc from `a'
  8. / and doing a return.
  9. /
  10.  
  11. .globl    _setjmp
  12. .globl    _longjmp
  13. .globl    csv, cret
  14.  
  15. _setjmp:
  16.     mov    2(sp),r0
  17.     mov    r5,(r0)+
  18.     mov    sp,(r0)+
  19.     mov    (sp),(r0)
  20.     clr    r0
  21.     rts    pc
  22.  
  23. _longjmp:
  24.     jsr    r5,csv
  25.     mov    4(r5),r0
  26. 1:
  27.     cmp    (r5),(r0)
  28.     beq    1f
  29.     mov    (r5),r5
  30.     bne    1b
  31. / panic -- r2-r4 lost
  32.     mov    (r0)+,r5
  33.     mov    (r0)+,sp
  34.     mov    (r0),(sp)
  35.     rts    pc
  36. 1:
  37.     mov    4(r0),2(r5)
  38.     jmp    cret
  39.  
  40.