xref: /plan9-contrib/sys/src/ape/lib/ap/mips64/setjmp.s (revision 6c6e36e1134c52b146e9d71d8c7dc193994c0c4e)
1*6c6e36e1SDavid du ColombierTEXT	setjmp(SB), 1, $-8
2*6c6e36e1SDavid du Colombier	MOVV	R29, (R1)
3*6c6e36e1SDavid du Colombier	MOVV	R31, 8(R1)
4*6c6e36e1SDavid du Colombier	MOVV	$0, R1
5*6c6e36e1SDavid du Colombier	RET
6*6c6e36e1SDavid du Colombier
7*6c6e36e1SDavid du ColombierTEXT	sigsetjmp(SB), 1, $-8
8*6c6e36e1SDavid du Colombier	MOVV	savemask+4(FP), R2
9*6c6e36e1SDavid du Colombier	MOVV	R2, 0(R1)
10*6c6e36e1SDavid du Colombier	MOVV	$_psigblocked(SB), R2
11*6c6e36e1SDavid du Colombier	MOVV	R2, 8(R1)
12*6c6e36e1SDavid du Colombier	MOVV	R29, 16(R1)
13*6c6e36e1SDavid du Colombier	MOVV	R31, 24(R1)
14*6c6e36e1SDavid du Colombier	MOVV	$0, R1
15*6c6e36e1SDavid du Colombier	RET
16*6c6e36e1SDavid du Colombier
17*6c6e36e1SDavid du ColombierTEXT	longjmp(SB), 1, $-8
18*6c6e36e1SDavid du Colombier	MOVW	r+12(FP), R3
19*6c6e36e1SDavid du Colombier	BNE	R3, ok		/* ansi: "longjmp(0) => longjmp(1)" */
20*6c6e36e1SDavid du Colombier	MOVW	$1, R3		/* bless their pointed heads */
21*6c6e36e1SDavid du Colombierok:	MOVV	(R1), R29
22*6c6e36e1SDavid du Colombier	MOVV	8(R1), R31
23*6c6e36e1SDavid du Colombier	MOVV	R3, R1
24*6c6e36e1SDavid du Colombier	RET
25