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 >
Wrap
Assembly Source File
|
1996-09-28
|
536b
|
28 lines
XDEF __setjmp
XDEF __longjmp
XDEF @_setjmp
XDEF @_longjmp
csect text,0,,2,2
__setjmp:
move.l 4(a7),a0 ; Get jmp_buf
@_setjmp
move.l (a7),(a0)+ ; Save return address
movem.l a2-a7/d2-d7,(a0) ; Save registers
moveq #0,d0
rts
__longjmp:
move.l 4(a7),a0 ; Get jmp_buf
move.l 8(a7),d0 ; Get result
@_longjmp
bne.s ok
moveq #1,d0 ; Return must be != 0
ok move.l (a0)+,a1 ; Get return address
movem.l (a0),a2-a7/d2-d7 ; Get registers
addq.l #4,a7 ; Pop return address
jmp (a1) ; And return to setjmp call
end