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