summaryrefslogtreecommitdiff
path: root/src/signal/riscv64/sigsetjmp.s
diff options
context:
space:
mode:
Diffstat (limited to 'src/signal/riscv64/sigsetjmp.s')
-rw-r--r--src/signal/riscv64/sigsetjmp.s23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/signal/riscv64/sigsetjmp.s b/src/signal/riscv64/sigsetjmp.s
new file mode 100644
index 00000000..f9bc162a
--- /dev/null
+++ b/src/signal/riscv64/sigsetjmp.s
@@ -0,0 +1,23 @@
+.global sigsetjmp
+.global __sigsetjmp
+.type sigsetjmp, %function
+.type __sigsetjmp, %function
+sigsetjmp:
+__sigsetjmp:
+ bnez a1, 1f
+ tail setjmp
+1:
+
+ sd ra, 208(a0)
+ sd s0, 224(a0)
+ mv s0, a0
+
+ call setjmp
+
+ mv a1, a0
+ mv a0, s0
+ ld s0, 224(a0)
+ ld ra, 208(a0)
+
+.hidden __sigsetjmp_tail
+ tail __sigsetjmp_tail