diff options
author | Mike Frysinger <vapier@gentoo.org> | 2006-02-11 04:29:52 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2006-02-11 04:29:52 +0000 |
commit | 8bb7fcac75daf9aa42de151ac655ef14645dad82 (patch) | |
tree | bcdc193b4cf98187b4bb8302b7be1b9df62bd966 | |
parent | 1482547961dfb38c0b9f5b77f402cbeb2fa71299 (diff) |
Joseph S. Myers writes:
This patch fixes some of the ARM EABI code to be interworking-safe, using
bx where appropriate. (This code went in around the same time as the
Thumb patches, hence not being fixed by those patches.)
-rw-r--r-- | libc/sysdeps/linux/arm/__longjmp.S | 4 | ||||
-rw-r--r-- | libc/sysdeps/linux/arm/mmap64.S | 4 | ||||
-rw-r--r-- | libc/sysdeps/linux/arm/syscall-eabi.S | 4 |
3 files changed, 12 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/arm/__longjmp.S b/libc/sysdeps/linux/arm/__longjmp.S index a21d26a79..27f127122 100644 --- a/libc/sysdeps/linux/arm/__longjmp.S +++ b/libc/sysdeps/linux/arm/__longjmp.S @@ -61,7 +61,11 @@ __longjmp: # endif #endif +#if defined(__USE_BX__) + bx lr +#else mov pc, lr +#endif .size __longjmp,.-__longjmp libc_hidden_def(__longjmp) diff --git a/libc/sysdeps/linux/arm/mmap64.S b/libc/sysdeps/linux/arm/mmap64.S index 847157b1b..ba8cb2fca 100644 --- a/libc/sysdeps/linux/arm/mmap64.S +++ b/libc/sysdeps/linux/arm/mmap64.S @@ -52,7 +52,11 @@ mmap64: DO_CALL (mmap2) cmn r0, $4096 ldmfd sp!, {r4, r5} +#if defined(__USE_BX__) + bxcc lr +#else movcc pc, lr +#endif b __syscall_error .Linval: mov r0, $-EINVAL diff --git a/libc/sysdeps/linux/arm/syscall-eabi.S b/libc/sysdeps/linux/arm/syscall-eabi.S index 761051754..efc30690c 100644 --- a/libc/sysdeps/linux/arm/syscall-eabi.S +++ b/libc/sysdeps/linux/arm/syscall-eabi.S @@ -37,7 +37,11 @@ syscall: swi 0x0 ldmfd sp!, {r4, r5, r6, r7} cmn r0, #4096 +#if defined(__USE_BX__) + bxcc lr +#else movcc pc, lr +#endif b __syscall_error .size syscall,.-syscall |