xref: /plan9-contrib/sys/src/ape/lib/ap/amd64/main9p.s (revision 272efad760864ee41cfe633b56aea9b4f5cf3ae7)
1*272efad7SDavid du Colombier#define NPRIVATES	16
2*272efad7SDavid du Colombier
3*272efad7SDavid du ColombierGLOBL	_tos(SB), $8
4*272efad7SDavid du ColombierGLOBL	_privates(SB), $8
5*272efad7SDavid du ColombierGLOBL	_nprivates(SB), $8
6*272efad7SDavid du Colombier
7*272efad7SDavid du ColombierTEXT	_mainp(SB), 1, $(3*8+NPRIVATES*8)
8*272efad7SDavid du Colombier
9*272efad7SDavid du Colombier	/* _tos = arg */
10*272efad7SDavid du Colombier	MOVQ	AX, _tos(SB)
11*272efad7SDavid du Colombier	LEAQ	8(SP), AX
12*272efad7SDavid du Colombier	MOVQ	AX, _privates(SB)
13*272efad7SDavid du Colombier	MOVQ	$NPRIVATES, _nprivates(SB)
14*272efad7SDavid du Colombier
15*272efad7SDavid du Colombier	/* _profmain(); */
16*272efad7SDavid du Colombier	CALL	_profmain(SB)
17*272efad7SDavid du Colombier
18*272efad7SDavid du Colombier	/* _tos->prof.pp = _tos->prof.next; */
19*272efad7SDavid du Colombier	MOVQ	_tos+0(SB),DX
20*272efad7SDavid du Colombier	MOVQ	4(DX),CX
21*272efad7SDavid du Colombier	MOVQ	CX,(DX)
22*272efad7SDavid du Colombier
23*272efad7SDavid du Colombier	CALL	_envsetup(SB)
24*272efad7SDavid du Colombier
25*272efad7SDavid du Colombier	/* main(argc, argv, environ); */
26*272efad7SDavid du Colombier	MOVL	inargc-8(FP), RARG
27*272efad7SDavid du Colombier	LEAQ	inargv+0(FP), AX
28*272efad7SDavid du Colombier	MOVQ	AX, 8(SP)
29*272efad7SDavid du Colombier	MOVQ	environ(SB), AX
30*272efad7SDavid du Colombier	MOVQ	AX, 16(SP)
31*272efad7SDavid du Colombier	CALL	main(SB)
32*272efad7SDavid du Colombier
33*272efad7SDavid du Colombierloop:
34*272efad7SDavid du Colombier	MOVL	AX, RARG
35*272efad7SDavid du Colombier	CALL	exit(SB)
36*272efad7SDavid du Colombier	MOVQ	$_profin(SB), AX	/* force loading of profile */
37*272efad7SDavid du Colombier	MOVL	$0, AX
38*272efad7SDavid du Colombier	JMP	loop
39*272efad7SDavid du Colombier
40*272efad7SDavid du ColombierTEXT	_savearg(SB), 1, $0
41*272efad7SDavid du Colombier	RET
42*272efad7SDavid du Colombier
43*272efad7SDavid du ColombierTEXT	_callpc(SB), 1, $0
44*272efad7SDavid du Colombier	MOVQ	8(RARG), AX
45*272efad7SDavid du Colombier	RET
46