1234567891011121314151617181920212223242526272829303132 |
- FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL )
-
- .text
- .arm
-
- /*
- * Save stack context for non-local goto
- */
- .globl setjmp
- .type setjmp, %function
- setjmp:
- /* Store registers */
- stmia r0, { r4, r5, r6, r7, r8, r9, r10, fp, sp, lr }
- /* Return 0 when returning as setjmp() */
- mov r0, #0
- bx lr
- .size setjmp, . - setjmp
-
- /*
- * Non-local jump to a saved stack context
- */
- .globl longjmp
- .type longjmp, %function
- longjmp:
- /* Restore registers */
- ldmia r0, { r4, r5, r6, r7, r8, r9, r10, fp, sp, lr }
- /* Force result to non-zero */
- movs r0, r1
- moveq r0, #1
- /* Return to setjmp() caller */
- bx lr
- .size longjmp, . - longjmp
|