xref: /plan9/sys/src/libc/sparc/setjmp.s (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
13e12c5d1SDavid du ColombierTEXT	setjmp(SB), 1, $0
23e12c5d1SDavid du Colombier
33e12c5d1SDavid du Colombier	MOVW	R1, (R7)
43e12c5d1SDavid du Colombier	MOVW	R15, 4(R7)
53e12c5d1SDavid du Colombier	MOVW	$0, R7
63e12c5d1SDavid du Colombier	RETURN
73e12c5d1SDavid du Colombier
83e12c5d1SDavid du ColombierTEXT	longjmp(SB), 1, $0
93e12c5d1SDavid du Colombier
103e12c5d1SDavid du Colombier	MOVW	R7, R8
113e12c5d1SDavid du Colombier	MOVW	r+4(FP), R7
123e12c5d1SDavid du Colombier	CMP	R7, R0
133e12c5d1SDavid du Colombier	BNE	ok		/* ansi: "longjmp(0) => longjmp(1)" */
143e12c5d1SDavid du Colombier	MOVW	$1, R7		/* bless their pointed heads */
153e12c5d1SDavid du Colombierok:	MOVW	(R8), R1
163e12c5d1SDavid du Colombier	MOVW	4(R8), R15
173e12c5d1SDavid du Colombier	RETURN
18*219b2ee8SDavid du Colombier
19*219b2ee8SDavid du Colombier/*
20*219b2ee8SDavid du Colombier * trampoline functions because the kernel smashes r7
21*219b2ee8SDavid du Colombier * in the uregs given to notejmp
22*219b2ee8SDavid du Colombier */
23*219b2ee8SDavid du ColombierTEXT	__noterestore(SB), 1, $-4
24*219b2ee8SDavid du Colombier	MOVW	R8, R7
25*219b2ee8SDavid du Colombier	JMP	(R9)
26