longjmp.s
571 Bytes
.syntax unified
.section .text
.align 2
.thumb
.global longjmp
longjmp:
/* Restore all the regsiters to get back in the original state (whenever the
matching setjmp was called. */
// General purpose registers
ldmia r0!, { r4-r11, ip, lr }
// Floating point registers
vldmia r0!, { s16-s31 }
// Special case for VFP status register
ldr r0, [r0, #4]
vmsr fpscr, r0
mov sp, ip
/* Put the return value in the integer result register, but return 1 if it is
in fact zero. */
movs r0, r1
it eq
moveq r0, #1
bx lr
.type longjmp, function