xref: /plan9/sys/src/ape/lib/ap/power/main9p.s (revision d2fd7a449ba15afc3f4999c6b00b9a2264c19913)
1*d2fd7a44SDavid du Colombier#define NPRIVATES	16
2*d2fd7a44SDavid du Colombier
3*d2fd7a44SDavid du ColombierGLOBL	_tos(SB), $4
4*d2fd7a44SDavid du ColombierGLOBL	_privates(SB), $4
5*d2fd7a44SDavid du ColombierGLOBL	_nprivates(SB), $4
6*d2fd7a44SDavid du Colombier
7*d2fd7a44SDavid du ColombierTEXT	_mainp(SB), 1, $(3*4+NPRIVATES*4)
87dd7cddfSDavid du Colombier
97dd7cddfSDavid du Colombier	MOVW	$setSB(SB), R2
107dd7cddfSDavid du Colombier
11*d2fd7a44SDavid du Colombier	/* _tos = arg */
12*d2fd7a44SDavid du Colombier	MOVW	R3, _tos(SB)
13*d2fd7a44SDavid du Colombier	MOVW	$8(SP), R1
14*d2fd7a44SDavid du Colombier	MOVW	R1, _privates(SB)
15*d2fd7a44SDavid du Colombier	MOVW	$NPRIVATES, R1
16*d2fd7a44SDavid du Colombier	MOVW	R1, _nprivates(SB)
17*d2fd7a44SDavid du Colombier
18*d2fd7a44SDavid du Colombier	/* _profmain(); */
197dd7cddfSDavid du Colombier	BL	_envsetup(SB)
20*d2fd7a44SDavid du Colombier
21*d2fd7a44SDavid du Colombier	/* _tos->prof.pp = _tos->prof.next; */
22*d2fd7a44SDavid du Colombier	MOVW	_tos+0(SB),R1
23*d2fd7a44SDavid du Colombier	MOVW	4(R1),R2
24*d2fd7a44SDavid du Colombier	MOVW	R2,(R1)
25*d2fd7a44SDavid du Colombier
26*d2fd7a44SDavid du Colombier	/* main(argc, argv, environ); */
277dd7cddfSDavid du Colombier	MOVW	inargc-4(FP), R3
287dd7cddfSDavid du Colombier	MOVW	$inargv+0(FP), R4
29*d2fd7a44SDavid du Colombier	MOVW	environ(SB), R5
307dd7cddfSDavid du Colombier	MOVW	R3, 4(R1)
317dd7cddfSDavid du Colombier	MOVW	R4, 8(R1)
32*d2fd7a44SDavid du Colombier	MOVW	R5, 12(R1)
337dd7cddfSDavid du Colombier	BL	main(SB)
349a747e4fSDavid du Colombierloop:
359a747e4fSDavid du Colombier	MOVW	R3, 4(R1)
369a747e4fSDavid du Colombier	BL	exit(SB)
37*d2fd7a44SDavid du Colombier	MOVW	$_profin(SB), R4	/* force loading of profile */
389a747e4fSDavid du Colombier	BR	loop
39*d2fd7a44SDavid du Colombier
40*d2fd7a44SDavid du ColombierTEXT	_savearg(SB), 1, $0
41*d2fd7a44SDavid du Colombier	RETURN
42*d2fd7a44SDavid du Colombier
43*d2fd7a44SDavid du ColombierTEXT	_callpc(SB), 1, $0
44*d2fd7a44SDavid du Colombier	MOVW	argp+0(FP), R3
45*d2fd7a44SDavid du Colombier	MOVW	4(R3), R3
46*d2fd7a44SDavid du Colombier	RETURN
47