# # arch/ppc/setjmp.S # # Basic setjmp/longjmp implementation # This file was derived from the equivalent file in NetBSD # .text .align 4 .type setjmp,@function .globl setjmp setjmp: mflr %r11 /* save return address */ mfcr %r12 /* save condition register */ mr %r10,%r1 /* save stack pointer */ mr %r9,%r2 /* save GPR2 (not needed) */ stmw %r9,0(%r3) /* save r9..r31 */ li %r3,0 /* indicate success */ blr /* return */ .size setjmp,.-setjmp .type longjmp,@function .globl longjmp longjmp: lmw %r9,0(%r3) /* save r9..r31 */ mtlr %r11 /* restore LR */ mtcr %r12 /* restore CR */ mr %r2,%r9 /* restore GPR2 (not needed) */ mr %r1,%r10 /* restore stack */ mr %r3,%r4 /* get return value */ blr /* return */ .size longjmp,.-longjmp