Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/newlib
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2008-04-25 13:02:40 +0400
committerNick Clifton <nickc@redhat.com>2008-04-25 13:02:40 +0400
commit026f9d290f5fe85fe9bd3a56be378fc794e28473 (patch)
tree74d43a750f151e7dee8263635d624071a0a081fb /newlib
parent4214d0c04c5a349e57df5cd9ff14533da94f14c3 (diff)
* libc/machine/arm/setjmp.S: Fix thumb2 support.
* arm/crt0.S: Allow assembly under ARMv7 ISA. Support for initializing stack pointers for interrupt modes is still pending.
Diffstat (limited to 'newlib')
-rw-r--r--newlib/ChangeLog4
-rw-r--r--newlib/libc/machine/arm/setjmp.S10
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__