about summary refs log tree commit diff
diff options
context:
space:
mode:
authorWill Newton <will.newton@linaro.org>2013-09-25 10:17:28 +0100
committerWill Newton <will.newton@linaro.org>2013-10-04 10:54:58 +0100
commit41bc5e09352ca838e1787f3109dcf4b4ae85986a (patch)
treef2230e74ff95b69520150ced26d69d73a738c9da
parent6d9b9a67af7f49151191a4c7c406ca6be89855ec (diff)
downloadglibc-41bc5e09352ca838e1787f3109dcf4b4ae85986a.tar.gz
glibc-41bc5e09352ca838e1787f3109dcf4b4ae85986a.tar.xz
glibc-41bc5e09352ca838e1787f3109dcf4b4ae85986a.zip
ARM: Allow building __sigsetjmp as Thumb.
Convert __sigsetjmp code to allow building as Thumb.

ports/ChangeLog.arm:

2013-10-04  Will Newton  <will.newton@linaro.org>

	* sysdeps/arm/setjmp.S (NO_THUMB): Remove define.
	(__sigsetjmp): Use Thumb supported instructions.
-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