math: new pow
[musl] / src / env / __init_tls.c
index 842886f..5f12500 100644 (file)
@@ -1,3 +1,4 @@
+#define SYSCALL_NO_TLS 1
 #include <elf.h>
 #include <limits.h>
 #include <sys/mman.h>
@@ -8,6 +9,8 @@
 #include "atomic.h"
 #include "syscall.h"
 
+volatile int __thread_list_lock;
+
 int __init_tp(void *p)
 {
        pthread_t td = p;
@@ -16,9 +19,11 @@ int __init_tp(void *p)
        if (r < 0) return -1;
        if (!r) libc.can_do_threads = 1;
        td->detach_state = DT_JOINABLE;
-       td->tid = __syscall(SYS_set_tid_address, &td->detach_state);
+       td->tid = __syscall(SYS_set_tid_address, &__thread_list_lock);
        td->locale = &libc.global_locale;
        td->robust_list.head = &td->robust_list.head;
+       td->sysinfo = __sysinfo;
+       td->next = td->prev = td;
        return 0;
 }