elf.h: add ELFCOMPRESS_ZSTD
[musl] / src / thread / i386 / __set_thread_area.s
1 .text
2 .global __set_thread_area
3 .hidden __set_thread_area
4 .type   __set_thread_area,@function
5 __set_thread_area:
6         push %ebx
7         push $0x51
8         push $0xfffff
9         push 16(%esp)
10         call 1f
11 1:      addl $4f-1b,(%esp)
12         pop %ecx
13         mov (%ecx),%edx
14         push %edx
15         mov %esp,%ebx
16         xor %eax,%eax
17         mov $243,%al
18         int $128
19         testl %eax,%eax
20         jnz 2f
21         movl (%esp),%edx
22         movl %edx,(%ecx)
23         leal 3(,%edx,8),%edx
24 3:      movw %dx,%gs
25 1:
26         addl $16,%esp
27         popl %ebx
28         ret
29 2:
30         mov %ebx,%ecx
31         xor %eax,%eax
32         xor %ebx,%ebx
33         xor %edx,%edx
34         mov %ebx,(%esp)
35         mov $1,%bl
36         mov $16,%dl
37         mov $123,%al
38         int $128
39         testl %eax,%eax
40         jnz 1b
41         mov $7,%dl
42         inc %al
43         jmp 3b
44
45 .data
46         .align 4
47 4:      .long -1