about summary refs log tree commit diff
path: root/src/signal/loongarch64/sigsetjmp.s
diff options
context:
space:
mode:
Diffstat (limited to 'src/signal/loongarch64/sigsetjmp.s')
-rw-r--r--src/signal/loongarch64/sigsetjmp.s25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/signal/loongarch64/sigsetjmp.s b/src/signal/loongarch64/sigsetjmp.s
new file mode 100644
index 00000000..9c0e3ae2
--- /dev/null
+++ b/src/signal/loongarch64/sigsetjmp.s
@@ -0,0 +1,25 @@
+.global sigsetjmp
+.global __sigsetjmp
+.type sigsetjmp,@function
+.type __sigsetjmp,@function
+sigsetjmp:
+__sigsetjmp:
+	beq     $a1, $zero, 1f
+	st.d    $ra, $a0, 184
+	st.d    $s0, $a0, 200  #184+8+8
+	move    $s0, $a0
+
+	la.global  $t0, setjmp
+	jirl       $ra, $t0, 0
+
+	move    $a1, $a0        # Return from 'setjmp' or 'longjmp'
+	move    $a0, $s0
+	ld.d    $ra, $a0, 184
+	ld.d    $s0, $a0, 200 #184+8+8
+
+.hidden __sigsetjmp_tail
+	la.global  $t0, __sigsetjmp_tail
+	jr         $t0
+1:
+	la.global  $t0, setjmp
+	jr         $t0