diff options
Diffstat (limited to 'newlib')
-rw-r--r-- | newlib/ChangeLog | 4 | ||||
-rw-r--r-- | newlib/libc/machine/arm/setjmp.S | 10 |
2 files changed, 14 insertions, 0 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 8ce345e28..1dcaa51ef 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,7 @@ +2008-04-25 Nick Clifton <nickc@redhat.com> + + * libc/machine/arm/setjmp.S: Fix thumb2 support. + 2008-04-24 Nick Clifton <nickc@redhat.com> * libc/include/machine/ieeefp.h: Fix typo: _DOUBLE_IS_32_BITS diff --git a/newlib/libc/machine/arm/setjmp.S b/newlib/libc/machine/arm/setjmp.S index 84e7cd70b..4bb2a46a7 100644 --- a/newlib/libc/machine/arm/setjmp.S +++ b/newlib/libc/machine/arm/setjmp.S @@ -120,7 +120,12 @@ SYM (\name): FUNC_START setjmp /* Save all the callee-preserved registers into the jump buffer. */ +#ifdef __thumb2__ + stmea a1!, { v1-v7, fp, ip, lr } + str sp, [a1],#+4 +#else stmea a1!, { v1-v7, fp, ip, sp, lr } +#endif #if 0 /* Simulator does not cope with FP instructions yet. */ #ifndef __SOFTFP__ @@ -142,7 +147,12 @@ SYM (\name): /* If we have stack extension code it ought to be handled here. */ /* Restore the registers, retrieving the state when setjmp() was called. */ +#ifdef __thumb2__ + ldmfd a1!, { v1-v7, fp, ip, lr } + ldr sp, [a1],#+4 +#else ldmfd a1!, { v1-v7, fp, ip, sp, lr } +#endif #if 0 /* Simulator does not cope with FP instructions yet. */ #ifndef __SOFTFP__ |