summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2014-05-21 11:36:03 -0400
committerWill Newton <will.newton@linaro.org>2014-07-03 14:41:18 +0100
commit30dfe53de773f49e432060e59d551b18d1b064f5 (patch)
treeffb9dd04af4501e64ea083aa95f2ef96f30989f9
parentb51c908c3b113fc3d67d16b1230c47b4a5be4eca (diff)
aarch64: Merge rtld_errno offset with memory reference
-rw-r--r--libc/ports/ChangeLog.aarch64.linaro5
-rw-r--r--libc/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h3
2 files changed, 6 insertions, 2 deletions
diff --git a/libc/ports/ChangeLog.aarch64.linaro b/libc/ports/ChangeLog.aarch64.linaro
index 65de2f98c..18e815e65 100644
--- a/libc/ports/ChangeLog.aarch64.linaro
+++ b/libc/ports/ChangeLog.aarch64.linaro
@@ -1,3 +1,8 @@
+2014-05-21 Richard Henderson <rth@redhat.com>
+
+ * sysdeps/unix/sysv/linux/aarch64/sysdep.h [RTLD_PRIVATE_ERRNO]
+ (SYSCALL_ERROR_HANDLER): Fold add insn into str offset.
+
2014-06-02 Wilco <wdijkstr@arm.com>
* sysdeps/aarch64/fpu/fpu_control.h (_FPU_SETCW): Remove ISB after
diff --git a/libc/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h b/libc/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h
index 5ccf1da18..88325a367 100644
--- a/libc/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h
+++ b/libc/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h
@@ -117,9 +117,8 @@
# define SYSCALL_ERROR_HANDLER \
__local_syscall_error: \
adrp x1, C_SYMBOL_NAME(rtld_errno); \
- add x1, x1, #:lo12:C_SYMBOL_NAME(rtld_errno); \
neg w0, w0; \
- str w0, [x1]; \
+ str w0, [x1, :lo12:C_SYMBOL_NAME(rtld_errno)]; \
mov x0, -1; \
RET;
# else