# # 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