overhaul clone syscall wrapping
[musl] / src / thread / i386 / __set_thread_area.s
index 2a2e31a..cccf1cd 100644 (file)
@@ -1,20 +1,22 @@
 .text
 .global __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)
+       push $-1
+       mov %esp,%ebx
+       xor %eax,%eax
+       mov $243,%al
        int $128
-       popl %ebx
        testl %eax,%eax
        jnz 1f
-       movl 4(%ecx),%ecx
+       movl (%esp),%ecx
        leal 3(,%ecx,8),%ecx
        movw %cx,%gs
 1:
+       addl $16,%esp
+       popl %ebx
        ret