diff options
author | Michal Meloun <mmel@FreeBSD.org> | 2018-12-05 10:23:38 +0000 |
---|---|---|
committer | Michal Meloun <mmel@FreeBSD.org> | 2018-12-05 10:23:38 +0000 |
commit | 22e9ff95aa5211286a4b421d357b9c1774c2a65e (patch) | |
tree | 395b7c63ec4427784f34942d5f84cec312659ade | |
parent | e8c479fddc8a7f4918e7abc9f932226a0c2fa50c (diff) | |
download | src-22e9ff95aa5211286a4b421d357b9c1774c2a65e.tar.gz src-22e9ff95aa5211286a4b421d357b9c1774c2a65e.zip |
Implement arm64 version of __tls_get_addr().
MFC after: 1 week
Notes
Notes:
svn path=/head/; revision=341512
-rw-r--r-- | libexec/rtld-elf/aarch64/reloc.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/libexec/rtld-elf/aarch64/reloc.c b/libexec/rtld-elf/aarch64/reloc.c index 66d3bdc2d812..9ad306344be0 100644 --- a/libexec/rtld-elf/aarch64/reloc.c +++ b/libexec/rtld-elf/aarch64/reloc.c @@ -517,3 +517,15 @@ allocate_initial_tls(Obj_Entry *objs) asm volatile("msr tpidr_el0, %0" : : "r"(tp)); } + +void * +__tls_get_addr(tls_index* ti) +{ + char *p; + void *_tp; + + __asm __volatile("mrs %0, tpidr_el0" : "=r" (_tp)); + p = tls_get_addr_common((Elf_Addr **)(_tp), ti->ti_module, ti->ti_offset); + + return (p); +} |