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