xref: /plan9-contrib/sys/src/ape/lib/ap/sparc/setjmp.s (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
1TEXT	setjmp(SB), 1, $0
2
3	MOVW	R1, (R7)
4	MOVW	R15, 4(R7)
5	MOVW	$0, R7
6	RETURN
7
8TEXT	sigsetjmp(SB), 1, $0
9
10	MOVW	savemask+4(FP), R8
11	MOVW	R8, 0(R7)
12	MOVW	$_psigblocked(SB), R8
13	MOVW	R8, 4(R7)
14	MOVW	R1, 8(R7)
15	MOVW	R15, 12(R7)
16	MOVW	$0, R7
17	RETURN
18
19TEXT	longjmp(SB), 1, $0
20
21	MOVW	R7, R8
22	MOVW	r+4(FP), R7
23	CMP	R7, R0
24	BNE	ok		/* ansi: "longjmp(0) => longjmp(1)" */
25	MOVW	$1, R7		/* bless their pointed heads */
26ok:	MOVW	(R8), R1
27	MOVW	4(R8), R15
28	RETURN
29
30/*
31 * trampoline functions because the kernel smashes r7
32 * in the uregs given to notejmp
33 */
34TEXT	__noterestore(SB), 1, $-4
35	MOVW	R8, R7
36	JMP	(R9)
37