xref: /plan9/sys/src/ape/lib/ap/386/main9p.s (revision d2fd7a449ba15afc3f4999c6b00b9a2264c19913)
13801c5d3SDavid du Colombier#define NPRIVATES	16
2219b2ee8SDavid du Colombier
33801c5d3SDavid du ColombierGLOBL	_tos(SB), $4
43801c5d3SDavid du ColombierGLOBL	_privates(SB), $4
53801c5d3SDavid du ColombierGLOBL	_nprivates(SB), $4
63801c5d3SDavid du Colombier
7*d2fd7a44SDavid du ColombierTEXT	_mainp(SB), 1, $(3*4+NPRIVATES*4)
83801c5d3SDavid du Colombier
93801c5d3SDavid du Colombier	/* _tos = arg */
103801c5d3SDavid du Colombier	MOVL	AX, _tos(SB)
113801c5d3SDavid du Colombier	LEAL	8(SP), AX
123801c5d3SDavid du Colombier	MOVL	AX, _privates(SB)
133801c5d3SDavid du Colombier	MOVL	$NPRIVATES, _nprivates(SB)
143801c5d3SDavid du Colombier
153801c5d3SDavid du Colombier	/* _profmain(); */
1659cc4ca5SDavid du Colombier	CALL	_profmain(SB)
173801c5d3SDavid du Colombier
183801c5d3SDavid du Colombier	/* _tos->prof.pp = _tos->prof.next; */
193801c5d3SDavid du Colombier	MOVL	_tos+0(SB),DX
203801c5d3SDavid du Colombier	MOVL	4(DX),CX
213801c5d3SDavid du Colombier	MOVL	CX,(DX)
223801c5d3SDavid du Colombier
23219b2ee8SDavid du Colombier	CALL	_envsetup(SB)
243801c5d3SDavid du Colombier
25360053c8SDavid du Colombier	/* main(argc, argv, environ); */
26219b2ee8SDavid du Colombier	MOVL	inargc-4(FP), AX
27219b2ee8SDavid du Colombier	MOVL	AX, 0(SP)
28219b2ee8SDavid du Colombier	LEAL	inargv+0(FP), AX
29219b2ee8SDavid du Colombier	MOVL	AX, 4(SP)
303801c5d3SDavid du Colombier	MOVL	environ(SB), AX
313801c5d3SDavid du Colombier	MOVL	AX, 8(SP)
32219b2ee8SDavid du Colombier	CALL	main(SB)
3359cc4ca5SDavid du Colombierloop:
34219b2ee8SDavid du Colombier	MOVL	AX, 0(SP)
35219b2ee8SDavid du Colombier	CALL	exit(SB)
3659cc4ca5SDavid du Colombier	MOVL	$_profin(SB), AX	/* force loading of profile */
3759cc4ca5SDavid du Colombier	MOVL	$0, AX
3859cc4ca5SDavid du Colombier	JMP	loop
3959cc4ca5SDavid du Colombier
4059cc4ca5SDavid du ColombierTEXT	_savearg(SB), 1, $0
4159cc4ca5SDavid du Colombier	RET
4259cc4ca5SDavid du Colombier
4359cc4ca5SDavid du ColombierTEXT	_callpc(SB), 1, $0
4459cc4ca5SDavid du Colombier	MOVL	argp+0(FP), AX
4559cc4ca5SDavid du Colombier	MOVL	4(AX), AX
46219b2ee8SDavid du Colombier	RET
47