8238c3ebf4d6ecb44b92573133e36cfa882ea383
[musl] / src / ldso / x86_64 / tlsdesc.s
1 .text
2 .global __tlsdesc_static
3 .hidden __tlsdesc_static
4 .type __tlsdesc_static,@function
5 __tlsdesc_static:
6         mov 8(%rax),%rax
7         ret
8
9 .hidden __tls_get_new
10
11 .global __tlsdesc_dynamic
12 .hidden __tlsdesc_dynamic
13 .type __tlsdesc_dynamic,@function
14 __tlsdesc_dynamic:
15         mov 8(%rax),%rax
16         push %rdx
17         mov %fs:8,%rdx
18         push %rcx
19         mov (%rax),%rcx
20         cmp %rcx,(%rdx)
21         jc 1f
22         mov 8(%rax),%rax
23         add (%rdx,%rcx,8),%rax
24 2:      pop %rcx
25         sub %fs:0,%rax
26         pop %rdx
27         ret
28 1:      push %rdi
29         push %rdi
30         push %rsi
31         push %r8
32         push %r9
33         push %r10
34         push %r11
35         mov %rax,%rdi
36         call __tls_get_new
37         pop %r11
38         pop %r10
39         pop %r9
40         pop %r8
41         pop %rsi
42         pop %rdi
43         pop %rdi
44         jmp 2b