diff options
-rw-r--r-- | newlib/ChangeLog | 5 | ||||
-rw-r--r-- | newlib/libc/machine/arm/setjmp.S | 4 |
2 files changed, 7 insertions, 2 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 01f0107ab..e7b3680d1 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,5 +1,10 @@ 2009-05-13 Paul Brook <paul@codesourcery.com> + * libc/machine/arm/setjmp.S: Don't bother saving IP. Copy SP to + IP before saving. Likewise when restoring. + +2009-05-13 Paul Brook <paul@codesourcery.com> + * libc/machine/arm/setjmp.S: Add ARMv6-M implementation. 2009-05-13 Corinna Vinschen <corinna@vinschen.de> diff --git a/newlib/libc/machine/arm/setjmp.S b/newlib/libc/machine/arm/setjmp.S index 2181a1874..a65fbabb9 100644 --- a/newlib/libc/machine/arm/setjmp.S +++ b/newlib/libc/machine/arm/setjmp.S @@ -170,8 +170,8 @@ SYM (\name): /* Save all the callee-preserved registers into the jump buffer. */ #ifdef __thumb2__ + mov ip, sp stmea a1!, { v1-v7, fp, ip, lr } - str sp, [a1],#+4 #else stmea a1!, { v1-v7, fp, ip, sp, lr } #endif @@ -198,7 +198,7 @@ SYM (\name): /* Restore the registers, retrieving the state when setjmp() was called. */ #ifdef __thumb2__ ldmfd a1!, { v1-v7, fp, ip, lr } - ldr sp, [a1],#+4 + mov sp, ip #else ldmfd a1!, { v1-v7, fp, ip, sp, lr } #endif |