xref: /plan9-contrib/sys/src/ape/lib/ap/mips64/main9p.s (revision 6c6e36e1134c52b146e9d71d8c7dc193994c0c4e)
1#define NPRIVATES	16
2
3GLOBL	_tos(SB), $8
4GLOBL	_privates(SB), $8
5GLOBL	_nprivates(SB), $8
6
7TEXT	_mainp(SB), 1, $(3*4+NPRIVATES*4)
8	MOVW	$setR30(SB), R30
9
10	/* _tos = arg */
11	MOVW	R1, _tos(SB)
12
13	MOVW	$8(SP), R1
14	MOVW	R1, _privates(SB)
15	MOVW	$NPRIVATES, R1
16	MOVW	R1, _nprivates(SB)
17
18	/* _profmain(); */
19	JAL	_profmain(SB)
20
21	/* _tos->prof.pp = _tos->prof.next; */
22	MOVW	_tos+0(SB),R1
23	MOVW	4(R1),R2
24	MOVW	R2,(R1)
25
26	JAL	_envsetup(SB)
27
28	/* main(argc, argv, environ); */
29	MOVW	inargc-4(FP), R1
30	MOVW	$inargv+0(FP), R2
31	MOVW	environ(SB), R3
32	MOVW	R1, 4(R29)
33	MOVW	R2, 8(R29)
34	MOVW	R3, 12(R29)
35	JAL	main(SB)
36loop:
37	MOVW	R1, 4(R29)
38	JAL	exit(SB)
39	MOVW	$_profin(SB), R0	/* force loading of profile */
40	JMP	loop
41
42TEXT	_savearg(SB), 1, $0
43	RET
44
45TEXT	_callpc(SB), 1, $0
46	MOVW	argp-4(FP), R1
47	RET
48