summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Johnston <jjohnstn@redhat.com>2009-05-13 18:31:55 +0000
committerJeff Johnston <jjohnstn@redhat.com>2009-05-13 18:31:55 +0000
commit5900080d7dd3e805415b6cd063d5a3707026042d (patch)
treedee05115ff80f1c4a66621615a281a6fe82f356b
parenteba36c51fa066f1a8abdc41c42b9f5310d181a12 (diff)
downloadcygnal-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.
-rw-r--r--newlib/ChangeLog5
-rw-r--r--newlib/libc/machine/arm/setjmp.S4
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