35 lines
507 B
ArmAsm
35 lines
507 B
ArmAsm
.text
|
|
.global _setjmp
|
|
.type _setjmp, @function
|
|
|
|
.align 2
|
|
/*
|
|
** int setjmp(jmp_buf env)
|
|
** Store the calling environment in ENV.
|
|
** Return 0.
|
|
*/
|
|
_setjmp:
|
|
! block interrupt
|
|
stc sr, r3
|
|
|
|
! save current context
|
|
! @note: r3 is the saved SR regsiter
|
|
add #52, r4
|
|
sts.l pr, @-r4
|
|
sts.l mach, @-r4
|
|
sts.l macl, @-r4
|
|
stc.l gbr, @-r4
|
|
mov.l r15, @-r4
|
|
mov.l r14, @-r4
|
|
mov.l r13, @-r4
|
|
mov.l r12, @-r4
|
|
mov.l r11, @-r4
|
|
mov.l r10, @-r4
|
|
mov.l r9, @-r4
|
|
mov.l r8, @-r4
|
|
mov.l r3, @-r4
|
|
|
|
! return
|
|
rts
|
|
mov #0, r0
|