optimize i386 ___tls_get_addr asm
[musl] / src / thread / i386 / __set_thread_area.s
1 .text
2 .global __set_thread_area
3 .type   __set_thread_area,@function
4 __set_thread_area:
5         push %ebx
6         push $0x51
7         push $0xfffff
8         push 16(%esp)
9         push $-1
10         mov %esp,%ebx
11         xor %eax,%eax
12         mov $243,%al
13         int $128
14         testl %eax,%eax
15         jnz 2f
16         movl (%esp),%edx
17         leal 3(,%edx,8),%edx
18 3:      movw %dx,%gs
19 1:
20         addl $16,%esp
21         popl %ebx
22         ret
23 2:
24         mov %ebx,%ecx
25         xor %ebx,%ebx
26         xor %edx,%edx
27         mov %ebx,(%esp)
28         mov $1,%bl
29         mov $16,%dl
30         mov $123,%al
31         int $128
32         testl %eax,%eax
33         jnz 1b
34         mov $7,%dl
35         inc %al
36         jmp 3b