summaryrefslogtreecommitdiff
path: root/src/signal/loongarch64/sigsetjmp.s
blob: 9c0e3ae2d590c52c83b5fcde686cf6a622d31b8c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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