aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/ChangeLog.arm3
-rw-r--r--ports/sysdeps/arm/setjmp.S5
2 files changed, 5 insertions, 3 deletions
diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm
index 3f47d5e3d4..6707d2ef3d 100644
--- a/ports/ChangeLog.arm
+++ b/ports/ChangeLog.arm
@@ -5,6 +5,9 @@
* sysdeps/unix/sysv/linux/arm/____longjmp_chk.S (NO_THUMB):
Remove define.
+ * sysdeps/arm/setjmp.S (NO_THUMB): Remove define.
+ (__sigsetjmp): Use Thumb supported instructions.
+
2013-10-03 Will Newton <will.newton@linaro.org>
* sysdeps/arm/__longjmp.S (__longjmp): Demangle fp, sp
diff --git a/ports/sysdeps/arm/setjmp.S b/ports/sysdeps/arm/setjmp.S
index b38b919af0..fedd994313 100644
--- a/ports/sysdeps/arm/setjmp.S
+++ b/ports/sysdeps/arm/setjmp.S
@@ -16,8 +16,6 @@
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
-/* ??? Needs more rearrangement for the STM to handle thumb mode. */
-#define NO_THUMB
#include <sysdep.h>
#include <bits/setjmp.h>
#include <rtld-global-offsets.h>
@@ -35,7 +33,8 @@ ENTRY (__sigsetjmp)
sfi_breg ip, \
stmia \B!, JMP_BUF_REGLIST
#ifdef PTR_MANGLE
- PTR_MANGLE2 (a4, sp, a3)
+ mov a4, sp
+ PTR_MANGLE2 (a4, a4, a3)
str a4, [ip], #4
PTR_MANGLE2 (a4, lr, a3)
str a4, [ip], #4