xref: /plan9/sys/src/ape/lib/ap/sparc/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	$setSB(SB), R2
9
10	/* _tos = arg */
11	MOVW	R7, _tos(SB)
12/*
13	MOVW	_fpsr+0(SB), FSR
14	FMOVD	$0.5, F26
15	FSUBD	F26, F26, F24
16	FADDD	F26, F26, F28
17	FADDD	F28, F28, F30
18*/
19	MOVW	$8(SP), R1
20	MOVW	R1, _privates(SB)
21	MOVW	$NPRIVATES, R1
22	MOVW	R1, _nprivates(SB)
23
24	/* _profmain(); */
25	JMPL	_profmain(SB)
26
27	/* _tos->prof.pp = _tos->prof.next; */
28	MOVW	_tos+0(SB),R7
29	MOVW	4(R7),R8
30	MOVW	R8,(R7)
31
32	JMPL	_envsetup(SB)
33
34	/* main(argc, argv, environ); */
35	MOVW	inargc-4(FP), R7
36	MOVW	$inargv+0(FP), R8
37	MOVW	environ(SB), R9
38	MOVW	R8, 8(R1)
39	MOVW	R9, 12(R1)
40	JMPL	main(SB)
41
42loop:
43	JMPL	exit(SB)
44	MOVW	$_mul(SB), R0		/* force loading of muldiv */
45	MOVW	$_profin(SB), R0	/* force loading of profile */
46	JMP	loop
47
48TEXT	_savearg(SB), 1, $0
49	RETURN
50
51TEXT	_callpc(SB), 1, $0
52	MOVW	argp-4(FP), R7
53	RETURN
54