a41a0e28c2
Not hooked up to the build yet.
66 lines
786 B
ArmAsm
66 lines
786 B
ArmAsm
#
|
|
# arch/sh/setjmp.S
|
|
#
|
|
# setjmp/longjmp for the SuperH architecture
|
|
#
|
|
|
|
#
|
|
# The jmp_buf is assumed to contain the following, in order:
|
|
#
|
|
# r8
|
|
# r9
|
|
# r10
|
|
# r11
|
|
# r12
|
|
# r13
|
|
# r14
|
|
# r15
|
|
# pr
|
|
#
|
|
|
|
.text
|
|
.align 2
|
|
|
|
.globl setjmp
|
|
.type setjmp, #function
|
|
|
|
setjmp:
|
|
add #(9*4), r4
|
|
sts.l pr, @-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
|
|
rts
|
|
mov #0, r0
|
|
|
|
.size setjmp,.-setjmp
|
|
|
|
.align 2
|
|
.globl longjmp
|
|
.type setjmp, #function
|
|
|
|
longjmp:
|
|
mov.l @r4+, r8
|
|
mov.l @r4+, r9
|
|
mov.l @r4+, r10
|
|
mov.l @r4+, r11
|
|
mov.l @r4+, r12
|
|
mov.l @r4+, r13
|
|
mov.l @r4+, r14
|
|
mov.l @r4+, r15
|
|
lds.l @r4+, pr
|
|
mov r5, r0
|
|
tst r0, r0
|
|
bf 1f
|
|
mov #1, r0 ! in case val==0
|
|
1: rts
|
|
nop
|
|
|
|
.size longjmp,.-longjmp
|
|
|