fix broken thread list unlocking after fork
[musl] / src / signal / i386 / sigsetjmp.s
index 91c8c04..690b251 100644 (file)
@@ -4,14 +4,23 @@
 .type __sigsetjmp,@function
 sigsetjmp:
 __sigsetjmp:
-       mov 4(%esp),%eax
        mov 8(%esp),%ecx
-       mov %ecx,24(%eax)
        jecxz 1f
-       add $28,%eax
-       push %eax
-       push $0
-       push $2
-       call sigprocmask
-       add $12,%esp
-1:     jmp setjmp
+
+       mov 4(%esp),%eax
+       popl 24(%eax)
+       mov %ebx,28+8(%eax)
+       mov %eax,%ebx
+
+.hidden ___setjmp
+       call ___setjmp
+
+       pushl 24(%ebx)
+       mov %ebx,4(%esp)
+       mov %eax,8(%esp)
+       mov 28+8(%ebx),%ebx
+
+.hidden __sigsetjmp_tail
+       jmp __sigsetjmp_tail
+
+1:     jmp ___setjmp