summaryrefslogtreecommitdiffhomepage
path: root/src/ldso/nt64/dynlink.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ldso/nt64/dynlink.c')
-rw-r--r--src/ldso/nt64/dynlink.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/ldso/nt64/dynlink.c b/src/ldso/nt64/dynlink.c
index c3cb23e..edfa4a8 100644
--- a/src/ldso/nt64/dynlink.c
+++ b/src/ldso/nt64/dynlink.c
@@ -50,13 +50,15 @@ void *__copy_tls(unsigned char * mem)
**/
pthread_t td;
- void ** dtv;
+ uintptr_t addr;
- dtv = (void **)mem;
- dtv[0] = 0;
+ addr = (uintptr_t)mem;
+ addr >>= 4;
+ addr <<= 4;
+ addr += 16;
- td = (void *)(dtv + 1);
- td->dtv = dtv;
+ td = (struct __pthread *)addr;
+ td->dtv = 0;
return td;
}