overhaul clone syscall wrapping
[musl] / src / thread / i386 / __set_thread_area.s
index a43525e..cccf1cd 100644 (file)
@@ -2,20 +2,21 @@
 .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