xref: /plan9/sys/src/ape/lib/ap/mips/main9p.s (revision d2fd7a449ba15afc3f4999c6b00b9a2264c19913)
1#define NPRIVATES	16
2
3GLOBL	_tos(SB), $4
4GLOBL	_privates(SB), $4
5GLOBL	_nprivates(SB), $4
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	$0,FCR31
14	NOR	R0,R0
15	MOVD	$0.5, F26
16	SUBD	F26, F26, F24
17	ADDD	F26, F26, F28
18	ADDD	F28, F28, F30
19*/
20	MOVW	$8(SP), R1
21	MOVW	R1, _privates(SB)
22	MOVW	$NPRIVATES, R1
23	MOVW	R1, _nprivates(SB)
24
25	/* _profmain(); */
26	JAL	_profmain(SB)
27
28	/* _tos->prof.pp = _tos->prof.next; */
29	MOVW	_tos+0(SB),R1
30	MOVW	4(R1),R2
31	MOVW	R2,(R1)
32
33	JAL	_envsetup(SB)
34
35	/* main(argc, argv, environ); */
36	MOVW	inargc-4(FP), R1
37	MOVW	$inargv+0(FP), R2
38	MOVW	environ(SB), R3
39	MOVW	R1, 4(R29)
40	MOVW	R2, 8(R29)
41	MOVW	R3, 12(R29)
42	JAL	main(SB)
43loop:
44	MOVW	R1, 4(R29)
45	JAL	exit(SB)
46	MOVW	$_profin(SB), R0	/* force loading of profile */
47	JMP	loop
48
49TEXT	_savearg(SB), 1, $0
50	RET
51
52TEXT	_callpc(SB), 1, $0
53	MOVW	argp-4(FP), R1
54	RET
55