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