about summary refs log tree commit diff
path: root/src/signal/aarch64/sigsetjmp.s
diff options
context:
space:
mode:
Diffstat (limited to 'src/signal/aarch64/sigsetjmp.s')
-rw-r--r--src/signal/aarch64/sigsetjmp.s22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/signal/aarch64/sigsetjmp.s b/src/signal/aarch64/sigsetjmp.s
index e0f83f06..347d0bc0 100644
--- a/src/signal/aarch64/sigsetjmp.s
+++ b/src/signal/aarch64/sigsetjmp.s
@@ -4,16 +4,18 @@
 .type __sigsetjmp,%function
 sigsetjmp:
 __sigsetjmp:
-	str x1,[x0,#176]
 	cbz x1,setjmp
 
-	// TODO errno?
-	// sigprocmask(SIG_SETMASK, 0, (sigset_t*)buf->__ss);
-	stp x0,x30,[sp,#-16]!
-	add x2,x0,#184
-	mov x1,#0
-	mov x0,#2
-	bl sigprocmask
-	ldp x0,x30,[sp],#16
+	str lr,[x0,#176]
+	str x19,[x0,#176+8+8]
+	mov x19,x0
 
-	b setjmp
+	bl setjmp
+
+	mov w1,w0
+	mov x0,x19
+	ldr lr,[x0,#176]
+	ldr x19,[x0,#176+8+8]
+
+.hidden __sigsetjmp_tail
+	b __sigsetjmp_tail