blob: 1b3591eb5bfca17475b119c38a9c9ff38493c9a4 [file] [log] [blame]
#
# arch/m68k/setjmp.S
#
# setjmp/longjmp for the m68k architecture
#
#
# The jmp_buf is assumed to contain the following, in order:
# %d2..%d7
# %a2..%a7
# return address
#
.text
.align 2
.globl setjmp
.type setjmp, @function
setjmp:
move.l (%sp)+, %d0 | Return address
movea.l (%sp), %a0 | Buffer address
| Postincrement mode is not permitted here...
movem.l %d2-%d7/%a2-%a7, (%a0)
move.l %d0, 48(%a0) | Return address
move.l %d0, -(%sp) | Restore return address
clr.l %d0 | Return value
movea.l %d0, %a0 | Redundant return...
rts
.size setjmp,.-setjmp
.text
.align 2
.globl longjmp
.type longjmp, @function
longjmp:
move.l 4(%sp), %a0 | Buffer address
move.l 8(%sp), %d0 | Return value
movem.l (%a0)+, %d2-%d7/%a2-%a7
movea.l (%a0), %a1
movea.l %d0, %a0 | Redundant return...
jmp.l (%a1)
.size longjmp,.-longjmp