s390x: add single instruction fma and fmaf
[musl] / src / signal / x86_64 / sigsetjmp.s
index 0a45078..9a7695f 100644 (file)
@@ -1,11 +1,24 @@
-/* Copyright 2011 Nicholas J. Kain, licensed GNU LGPL 2.1 or later */
 .global sigsetjmp
+.global __sigsetjmp
+.type sigsetjmp,@function
+.type __sigsetjmp,@function
 sigsetjmp:
-       test %rsi,%rsi
-       jz 1f              /* if save == 0, just goto setjmp */
-       movq %rsi,64(%rdi) /* move save -> jmp_buf[8] */
-       addq $72,%rdi      /* add sizeof(jmp_buf) to rdi */
-       movl $0,%esi       /* arg2 = 0 */
-       movl $2,%edx       /* arg3 = 2 */
-       call sigprocmask   /* sigprocmask(jmp_buf, 0, 2) */
-1:     jmp setjmp
+__sigsetjmp:
+       test %esi,%esi
+       jz 1f
+
+       popq 64(%rdi)
+       mov %rbx,72+8(%rdi)
+       mov %rdi,%rbx
+
+       call setjmp@PLT
+
+       pushq 64(%rbx)
+       mov %rbx,%rdi
+       mov %eax,%esi
+       mov 72+8(%rbx),%rbx
+
+.hidden __sigsetjmp_tail
+       jmp __sigsetjmp_tail
+
+1:     jmp setjmp@PLT