mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-22 13:00:06 +00:00
aarch64: Use tpidr_el0 rather than __errno_location in librt
This commit is contained in:
parent
a17e5ffb80
commit
11a28aee60
@ -1,7 +1,13 @@
|
||||
2014-05-29 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/sysdep.h [NOT_IN_libc]
|
||||
(SYSCALL_ERROR_HANDLER): Use tpidr_el0 instead of a call
|
||||
to __errno_location.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/localplt.data (libpthread.so):
|
||||
Remove the expected plt for __errno_location.
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h
|
||||
[!NOT_IN_libc] (SINGLE_THREAD_P): Use tpidr_el0 instead of a
|
||||
[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):
|
||||
|
@ -12,4 +12,3 @@ libm.so: matherr
|
||||
libm.so: __signbit
|
||||
libm.so: __signbitf
|
||||
libm.so: __signbitl
|
||||
libpthread.so: __errno_location
|
||||
|
@ -123,21 +123,12 @@
|
||||
|
||||
# define SYSCALL_ERROR_HANDLER \
|
||||
.Lsyscall_error: \
|
||||
stp x29, x30, [sp, -32]!; \
|
||||
cfi_adjust_cfa_offset (32); \
|
||||
cfi_rel_offset (x29, 0); \
|
||||
cfi_rel_offset (x30, 8); \
|
||||
add x29, sp, 0; \
|
||||
str x19, [sp,16]; \
|
||||
neg x19, x0; \
|
||||
bl C_SYMBOL_NAME(__errno_location); \
|
||||
str w19, [x0]; \
|
||||
adrp x1, :gottprel:errno; \
|
||||
neg w2, w0; \
|
||||
ldr x1, [x1, :gottprel_lo12:errno]; \
|
||||
mrs x3, tpidr_el0; \
|
||||
mov x0, -1; \
|
||||
ldr x19, [sp,16]; \
|
||||
ldp x29, x30, [sp], 32; \
|
||||
cfi_adjust_cfa_offset (-32); \
|
||||
cfi_restore (x29); \
|
||||
cfi_restore (x30); \
|
||||
str w2, [x1, x3]; \
|
||||
RET;
|
||||
# endif
|
||||
# else
|
||||
|
Loading…
Reference in New Issue
Block a user