diff options
author | Will Newton <will.newton@linaro.org> | 2013-09-25 10:17:28 +0100 |
---|---|---|
committer | Will Newton <will.newton@linaro.org> | 2013-10-04 10:54:58 +0100 |
commit | 41bc5e09352ca838e1787f3109dcf4b4ae85986a (patch) | |
tree | f2230e74ff95b69520150ced26d69d73a738c9da | |
parent | 6d9b9a67af7f49151191a4c7c406ca6be89855ec (diff) | |
download | glibc-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.arm | 3 | ||||
-rw-r--r-- | ports/sysdeps/arm/setjmp.S | 5 |
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 |