master
 1.set	noreorder
 2.global	sigsetjmp
 3.global	__sigsetjmp
 4.type	sigsetjmp,@function
 5.type	__sigsetjmp,@function
 6sigsetjmp:
 7__sigsetjmp:
 8	lui	$3, %hi(%neg(%gp_rel(sigsetjmp)))
 9	daddiu	$3, $3, %lo(%neg(%gp_rel(sigsetjmp)))
10
11	# comparing save mask with 0, if equals to 0 then
12	# sigsetjmp is equal to setjmp.
13	beq	$5, $0, 1f
14	daddu	$3, $3, $25
15	sd	$ra, 160($4)
16	sd	$16, 168($4)
17
18	# save base of got so that we can use it later
19	# once we return from 'longjmp'
20	sd	$3, 176($4)
21	ld	$25, %got_disp(setjmp)($3)
22	jalr	$25
23	move	$16, $4
24
25	move	$5, $2		# Return from 'setjmp' or 'longjmp'
26	move	$4, $16		# Restore the pointer-to-sigjmp_buf
27	ld	$ra, 160($4)	# Restore ra of sigsetjmp
28	ld	$16, 168($4)	# Restore $16 of sigsetjmp
29	ld	$3, 176($4)	# Restore base of got
30
31.hidden	__sigsetjmp_tail
32	ld	$25, %got_disp(__sigsetjmp_tail)($3)
33	jr	$25
34	nop
351:
36	ld	$25, %got_disp(setjmp)($3)
37	jr	$25
38	nop