aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWill Newton <will.newton@linaro.org>2014-01-23 11:11:24 +0000
committerMike Frysinger <vapier@gentoo.org>2014-01-25 16:35:35 -0500
commitf09e8aec0cf7a8ddda8ae04859f3e256c1741775 (patch)
treebaf106cda868baea28e7342b9df3aaa762184e11
parent3cd70f9e650bafef5c73c19229e6f0176604bb9e (diff)
downloadglibc-f09e8aec0cf7a8ddda8ae04859f3e256c1741775.tar
glibc-f09e8aec0cf7a8ddda8ae04859f3e256c1741775.tar.gz
glibc-f09e8aec0cf7a8ddda8ae04859f3e256c1741775.tar.bz2
glibc-f09e8aec0cf7a8ddda8ae04859f3e256c1741775.zip
ARM: Fix clone build for ARMv4
ARMv4 does not have the blx instruction, so use the BLX macro which handles abstracting this for us. Build tested for armv7, armv4t and armv4. ports/ChangeLog.arm: 2014-01-24 Will Newton <will.newton@linaro.org> [BZ #16499] * sysdeps/unix/sysv/linux/arm/clone.S: Use BLX macro instead of blx instruction directly. (cherry picked from commit 47590bce28616abbcee93457da91d65a7a07589b)
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/clone.S8
1 files changed, 1 insertions, 7 deletions
diff --git a/ports/sysdeps/unix/sysv/linux/arm/clone.S b/ports/sysdeps/unix/sysv/linux/arm/clone.S
index 6e74fa702b..1f45cf3841 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/clone.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/clone.S
@@ -88,14 +88,8 @@ PSEUDO_END (__clone)
#endif
@ pick the function arg and call address off the stack and execute
ldr r0, [sp, #4]
-#if defined(__ARM_ARCH_4T__) && defined(__THUMB_INTERWORK__)
ldr ip, [sp], #8
- mov lr, pc
- bx ip
-#else
- ldr lr, [sp], #8
- blx lr
-#endif
+ BLX (ip)
@ and we are done, passing the return value through r0
b PLTJMP(HIDDEN_JUMPTARGET(_exit))