home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V7 / usr / src / libc / gen / setjmp.s < prev    next >
Encoding:
Text File  |  1979-01-10  |  525 b   |  43 lines

  1. / C library -- setjmp, longjmp
  2.  
  3. /    longjmp(a,v)
  4. / will generate a "return(v)" 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),r1
  26.     mov    6(r5),r0
  27.     bne    1f
  28.     mov    $1,r0
  29. 1:
  30.     cmp    (r5),(r1)
  31.     beq    1f
  32.     mov    (r5),r5
  33.     bne    1b
  34. / panic -- r2-r4 lost
  35.     mov    (r1)+,r5
  36.     mov    (r1)+,sp
  37.     mov    (r1),(sp)
  38.     rts    pc
  39. 1:
  40.     mov    4(r1),2(r5)
  41.     jmp    cret
  42.  
  43.