mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03:00
* configure.in (ASM_ALPHA_NG_SYMBOL_PREFIX): Remove test.
* configure: Regenerated. * config.h.in (ASM_ALPHA_NG_SYMBOL_PREFIX): Remove #undef. * sysdeps/alpha/dl-machine.h (TRAMPOLINE_TEMPLATE): Use !samegp. (RTLD_START): Likewise. Access _dl_skip_args, _rtld_local, and _dl_fini via gp-relative relocations. * sysdeps/alpha/fpu/e_sqrt.c: Use !samegp. * elf/tls-macros.h: Add alpha versions. * sysdeps/alpha/dl-machine.h (elf_machine_rela): Handle TLS relocs. * sysdeps/unix/alpha/sysdep.S: Support USE___THREAD. * sysdeps/unix/alpha/sysdep.h: Likewise. Add SYSCALL_ERROR_HANDLER. * sysdeps/unix/sysv/linux/alpha/brk.S: Use it. * sysdeps/unix/sysv/linux/alpha/clone.S: Likewise. * sysdeps/unix/sysv/linux/alpha/getitimer.S: Likewise. * sysdeps/unix/sysv/linux/alpha/getrusage.S: Likewise. * sysdeps/unix/sysv/linux/alpha/gettimeofday.S: Likewise. * sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Likewise. * sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise. * sysdeps/unix/sysv/linux/alpha/rt_sigaction.S: Likewise. * sysdeps/unix/sysv/linux/alpha/select.S: Likewise. * sysdeps/unix/sysv/linux/alpha/setitimer.S: Likewise. * sysdeps/unix/sysv/linux/alpha/settimeofday.S: Likewise. * sysdeps/unix/sysv/linux/alpha/sigsuspend.S: Likewise. * sysdeps/unix/sysv/linux/alpha/syscall.S: Likewise. * sysdeps/unix/sysv/linux/alpha/utimes.S: Likewise. * sysdeps/unix/sysv/linux/alpha/wait4.S: Likewise. * sysdeps/unix/sysv/linux/alpha/sysdep.h: Re-include protect. Kill argument registers across the inline syscall. * sysdeps/unix/sysv/linux/alpha/clone.S: Add user_tid and tls args. * linuxthreads/sysdeps/alpha/tls.h: New file. * sysdeps/alpha/dl-tls.h: New file.
This commit is contained in:
@ -211,6 +211,33 @@
|
||||
"r12", "pr", "t"); \
|
||||
__l; })
|
||||
|
||||
#elif defined __alpha__
|
||||
|
||||
register void *__gp __asm__("$29");
|
||||
|
||||
# define TLS_LE(x) \
|
||||
({ int *__l; \
|
||||
asm ("call_pal 158\n\tlda $0," #x "($0)\t\t!tprel" : "=v"(__l)); \
|
||||
__l; })
|
||||
|
||||
# define TLS_IE(x) \
|
||||
({ char *__tp; unsigned long __o; \
|
||||
asm ("call_pal 158\n\tldq %1," #x "($gp)\t\t!gottprel" \
|
||||
: "=v"(__tp), "=r"(__o) : "r"(__gp)); \
|
||||
(int *)(__tp + __o); })
|
||||
|
||||
# define TLS_LD(x) \
|
||||
({ extern void *__tls_get_addr(void *); int *__l; void *__i; \
|
||||
asm ("lda %0," #x "($gp)\t\t!tlsldm" : "=r" (__i) : "r"(__gp)); \
|
||||
__i = __tls_get_addr(__i); \
|
||||
asm ("lda %0, " #x "(%1)\t\t!dtprel" : "=r"(__l) : "r"(__i)); \
|
||||
__l; })
|
||||
|
||||
# define TLS_GD(x) \
|
||||
({ extern void *__tls_get_addr(void *); void *__i; \
|
||||
asm ("lda %0," #x "($gp)\t\t!tlsgd" : "=r" (__i) : "r"(__gp)); \
|
||||
(int *) __tls_get_addr(__i); })
|
||||
|
||||
#else
|
||||
# error "No support for this architecture so far."
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user