xref: /plan9/sys/src/libc/arm/main9p.s (revision 6ca8a7e31df69aa273b57c9a8727a3aa1ead4d4b)
1#define NPRIVATES	16
2
3arg=0
4sp=13
5sb=12
6
7TEXT	_mainp(SB), 1, $(16 + NPRIVATES*4)
8	MOVW	$setR12(SB), R(sb)
9	MOVW	R(arg), _tos(SB)
10
11	MOVW	$p-64(SP), R1
12	MOVW	R1, _privates(SB)
13	MOVW	$NPRIVATES, R1
14	MOVW	R1, _nprivates(SB)
15
16	BL	_profmain(SB)
17	MOVW	_tos(SB), R1
18	MOVW	4(R1), R0
19	MOVW	R0, 0(R1)
20
21	MOVW	$inargv+0(FP), R(arg)
22	MOVW	R(arg), 8(R(sp))
23	MOVW	inargc-4(FP), R(arg)
24	MOVW	R(arg), 4(R(sp))
25	BL	main(SB)
26loop:
27	MOVW	$_exitstr<>(SB), R(arg)
28	MOVW	R(arg), 4(R(sp))
29	BL	exits(SB)
30	MOVW	$_div(SB), R(arg)	/* force loading of div */
31	MOVW	$_profin(SB), R(arg)	/* force loading of profile */
32	B	loop
33
34TEXT	_savearg(SB), 1, $0
35	RET
36
37TEXT	_callpc(SB), 1, $-4
38	MOVW	0(R13), R(arg)
39	RET
40
41DATA	_exitstr<>+0(SB)/4, $"main"
42GLOBL	_exitstr<>+0(SB), $5
43