xref: /plan9/sys/src/ape/lib/ap/arm/main9p.s (revision d2fd7a449ba15afc3f4999c6b00b9a2264c19913)
180ee5cbfSDavid du Colombierarg=0
280ee5cbfSDavid du Colombiersp=13
380ee5cbfSDavid du Colombiersb=12
480ee5cbfSDavid du Colombier
5*d2fd7a44SDavid du Colombier#define NPRIVATES	16
680ee5cbfSDavid du Colombier
7*d2fd7a44SDavid du ColombierGLOBL	_tos(SB), $4
8*d2fd7a44SDavid du ColombierGLOBL	_privates(SB), $4
9*d2fd7a44SDavid du ColombierGLOBL	_nprivates(SB), $4
10*d2fd7a44SDavid du Colombier
11*d2fd7a44SDavid du ColombierTEXT	_mainp(SB), 1, $(3*4+NPRIVATES*4)
12*d2fd7a44SDavid du Colombier
13*d2fd7a44SDavid du Colombier	MOVW	$setR12(SB), R(sb)
14*d2fd7a44SDavid du Colombier
15*d2fd7a44SDavid du Colombier	/* _tos = arg */
16*d2fd7a44SDavid du Colombier	MOVW	R(arg), _tos(SB)
17*d2fd7a44SDavid du Colombier	MOVW	$private+8(SP), R1
18*d2fd7a44SDavid du Colombier	MOVW	R1, _privates(SB)
19*d2fd7a44SDavid du Colombier	MOVW	$NPRIVATES, R1
20*d2fd7a44SDavid du Colombier	MOVW	R1, _nprivates(SB)
21*d2fd7a44SDavid du Colombier
22*d2fd7a44SDavid du Colombier	/* _profmain(); */
2380ee5cbfSDavid du Colombier	BL	_profmain(SB)
24*d2fd7a44SDavid du Colombier
25*d2fd7a44SDavid du Colombier	/* _tos->prof.pp = _tos->prof.next; */
26*d2fd7a44SDavid du Colombier	MOVW	_tos+0(SB),R1
27*d2fd7a44SDavid du Colombier	MOVW	4(R1), R2
28*d2fd7a44SDavid du Colombier	MOVW	R2, 0(R1)
29*d2fd7a44SDavid du Colombier
3080ee5cbfSDavid du Colombier	BL	_envsetup(SB)
31*d2fd7a44SDavid du Colombier
32*d2fd7a44SDavid du Colombier	/* main(argc, argv, environ); */
3380ee5cbfSDavid du Colombier	MOVW	$inargv+0(FP), R(arg)
3480ee5cbfSDavid du Colombier	MOVW	R(arg), 8(R(sp))
3580ee5cbfSDavid du Colombier	MOVW	inargc-4(FP), R(arg)
3680ee5cbfSDavid du Colombier	MOVW	R(arg), 4(R(sp))
37*d2fd7a44SDavid du Colombier	MOVW	environ(SB), R(arg)
38*d2fd7a44SDavid du Colombier	MOVW	R(arg), 8(R(sp))
3980ee5cbfSDavid du Colombier	BL	main(SB)
4080ee5cbfSDavid du Colombierloop:
4180ee5cbfSDavid du Colombier	MOVW	R(arg), 4(R(sp))
42*d2fd7a44SDavid du Colombier	BL	exit(SB)
4380ee5cbfSDavid du Colombier	MOVW	$_div(SB), R(arg)	/* force loading of div */
4480ee5cbfSDavid du Colombier	MOVW	$_profin(SB), R(arg)	/* force loading of profile */
4580ee5cbfSDavid du Colombier	B	loop
4680ee5cbfSDavid du Colombier
4780ee5cbfSDavid du ColombierTEXT	_savearg(SB), 1, $0
4880ee5cbfSDavid du Colombier	RET
4980ee5cbfSDavid du Colombier
5080ee5cbfSDavid du ColombierTEXT	_callpc(SB), 1, $0
5180ee5cbfSDavid du Colombier	MOVW	argp-4(FP), R(arg)
5280ee5cbfSDavid du Colombier	RET
53