home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / emacs-19.28-src.tgz / tar.out / fsf / emacs / unixlib / src / _setjmp.asm < prev    next >
Assembly Source File  |  1996-09-28  |  536b  |  28 lines

  1.     XDEF    __setjmp
  2.     XDEF    __longjmp
  3.     XDEF    @_setjmp
  4.     XDEF    @_longjmp
  5.     
  6.     csect    text,0,,2,2
  7.  
  8. __setjmp:
  9.     move.l    4(a7),a0        ; Get jmp_buf
  10. @_setjmp
  11.     move.l    (a7),(a0)+        ; Save return address
  12.     movem.l    a2-a7/d2-d7,(a0)    ; Save registers
  13.     moveq    #0,d0
  14.     rts
  15.  
  16. __longjmp:
  17.     move.l    4(a7),a0        ; Get jmp_buf
  18.     move.l    8(a7),d0        ; Get result
  19. @_longjmp
  20.     bne.s    ok
  21.     moveq    #1,d0            ; Return must be != 0
  22. ok    move.l    (a0)+,a1        ; Get return address
  23.     movem.l    (a0),a2-a7/d2-d7    ; Get registers
  24.     addq.l    #4,a7            ; Pop return address
  25.     jmp    (a1)            ; And return to setjmp call
  26.  
  27.     end
  28.