]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
aarch64: Use tpidr_el0 rather than __read_tp in librt
authorRichard Henderson <rth@redhat.com>
Tue, 20 May 2014 20:17:20 +0000 (16:17 -0400)
committerRichard Henderson <rth@redhat.com>
Thu, 29 May 2014 16:39:03 +0000 (12:39 -0400)
ChangeLog
sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h

index 26812de5f1025c8c0963365ab5f1122f3906727e..5b9b820b45f396e9207a6864e8e6c7b7e063e7a5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2014-05-29  Richard Henderson  <rth@twiddle.net>
 
+       * sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h
+       [!NOT_IN_libc] (SINGLE_THREAD_P): Use tpidr_el0 instead of a
+       call to __read_tp.
+
        * sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h (PSEUDO):
        Always allocate 64 bytes of stack frame.  Use ldp/stp to create
        it and break it down.
index 0f5bb514e32a69dab5117975ce3be423cadd16a9..546ed7b55c68549bd242519fb89c8b875e927a3c 100644 (file)
@@ -113,17 +113,9 @@ extern int __local_multiple_threads attribute_hidden;
                                   header.multiple_threads) == 0, 1)
 #  else
 #   define SINGLE_THREAD_P(R)                                          \
-       stp     x0, x30, [sp, -16]!;                                    \
-       cfi_adjust_cfa_offset (16);                                     \
-       cfi_rel_offset (x0, 0);                                         \
-       cfi_rel_offset (x30, 8);                                        \
-       bl      __read_tp;                                              \
-       sub     x0, x0, PTHREAD_SIZEOF;                                 \
-       ldr     w##R, [x0, PTHREAD_MULTIPLE_THREADS_OFFSET];            \
-       ldp     x0, x30, [sp], 16;                                      \
-       cfi_restore (x0);                                               \
-       cfi_restore (x30);                                              \
-       cfi_adjust_cfa_offset (-16)
+       mrs     x##R, tpidr_el0;                                        \
+       sub     x##R, x##R, PTHREAD_SIZEOF;                             \
+       ldr     w##R, [x##R, PTHREAD_MULTIPLE_THREADS_OFFSET]
 #  endif
 # endif