Systemd/klibc/klibc/arch/arm/setjmp-thumb.S
greg@kroah.com a41a0e28c2 [PATCH] added klibc version 0.82 (cvs tree) to the udev tree.
Not hooked up to the build yet.
2005-04-26 21:05:23 -07:00

59 lines
778 B
ArmAsm

#
# arch/arm/setjmp-thumb.S
#
# setjmp/longjmp for the ARM/thumb architecture
#
#
# The jmp_buf is assumed to contain the following, in order:
# lr
# r4
# r5
# r6
# r7
# r8
# r9
# r10
# fp
# sp
#
.text
.align 4
.globl setjmp
.type setjmp, #function
.thumb_func
setjmp:
mov r3, lr
stmia r0!, {r3, r4, r5, r6, r7}
mov r3, r8
mov r4, r9
mov r5, r10
mov r6, fp
mov r7, sp
stmia r0!, {r3, r4, r5, r6, r7}
mov r0, #0
mov pc, lr
.size setjmp,.-setjmp
.text
.align 4
.globl longjmp
.type longjmp, #function
.thumb_func
longjmp:
mov r2, r0
add r0, #5*4
ldmia r0!, {r3, r4, r5, r6, r7}
mov r8, r3
mov r9, r4
mov r10, r5
mov fp, r6
mov sp, r7
ldmia r2!, {r3, r4, r5, r6, r7}
mov r0, r1
bne 1f
mov r0, #1
1: mov pc, r3
.size longjmp,.-longjmp