elf.h: add ELFCOMPRESS_ZSTD
[musl] / src / thread / i386 / __set_thread_area.s
index a43525e..aa6852b 100644 (file)
@@ -1,21 +1,47 @@
 .text
 .global __set_thread_area
+.hidden __set_thread_area
 .type   __set_thread_area,@function
 __set_thread_area:
-       pushl %ebx
-       movl 8(%esp),%ecx
-       movl $-1,4(%ecx)
-       movl %ecx,8(%ecx)
-       movl $0xfffff,12(%ecx)
-       movl $0x51,16(%ecx)
-       leal 4(%ecx),%ebx
-       movl $243,%eax
+       push %ebx
+       push $0x51
+       push $0xfffff
+       push 16(%esp)
+       call 1f
+1:     addl $4f-1b,(%esp)
+       pop %ecx
+       mov (%ecx),%edx
+       push %edx
+       mov %esp,%ebx
+       xor %eax,%eax
+       mov $243,%al
        int $128
-       popl %ebx
        testl %eax,%eax
-       jnz 1f
-       movl 4(%ecx),%ecx
-       leal 3(,%ecx,8),%ecx
-       movw %cx,%gs
+       jnz 2f
+       movl (%esp),%edx
+       movl %edx,(%ecx)
+       leal 3(,%edx,8),%edx
+3:     movw %dx,%gs
 1:
+       addl $16,%esp
+       popl %ebx
        ret
+2:
+       mov %ebx,%ecx
+       xor %eax,%eax
+       xor %ebx,%ebx
+       xor %edx,%edx
+       mov %ebx,(%esp)
+       mov $1,%bl
+       mov $16,%dl
+       mov $123,%al
+       int $128
+       testl %eax,%eax
+       jnz 1b
+       mov $7,%dl
+       inc %al
+       jmp 3b
+
+.data
+       .align 4
+4:     .long -1