[klibc] [PATCH] fix ARM longjmp with zero 'val'.

Bill Pringlemeir bpringle at sympatico.ca
Tue Oct 2 10:29:52 PDT 2012

[klibc] [PATCH] fix ARM longjmp with zero 'val'.

We need to set the condition codes on the ARM.  The previous version was
using a left over condition code from the caller.  Also, use conditional
execution to eliminate branch and reduce size.

Signed-off-by: Bill Pringlemeir <bpringle at sympatico.ca>

diff --git a/usr/klibc/arch/arm/setjmp.S b/usr/klibc/arch/arm/setjmp.S
index 92ffc43..9f96274 100644
--- a/usr/klibc/arch/arm/setjmp.S
+++ b/usr/klibc/arch/arm/setjmp.S
@@ -40,10 +40,9 @@ setjmp:
        .type longjmp, #function
        ldmia   r0, {r4, r5, r6, r7, r8, r9, r10, fp, sp, lr}
-       mov     r0, r1
-       bne     1f
-       mov     r0, #1
-1:     BX(lr)
+       movs    r0, r1
+       moveq   r0, #1
+       BX(lr)
        .size longjmp,.-longjmp
 #else /* __thumb__ */

More information about the klibc mailing list