diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2009-05-13 18:31:55 +0000 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2009-05-13 18:31:55 +0000 |
commit | 5900080d7dd3e805415b6cd063d5a3707026042d (patch) | |
tree | dee05115ff80f1c4a66621615a281a6fe82f356b /newlib | |
parent | eba36c51fa066f1a8abdc41c42b9f5310d181a12 (diff) | |
download | cygnal-5900080d7dd3e805415b6cd063d5a3707026042d.tar.gz cygnal-5900080d7dd3e805415b6cd063d5a3707026042d.tar.bz2 cygnal-5900080d7dd3e805415b6cd063d5a3707026042d.zip |
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.
Diffstat (limited to 'newlib')
-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 |