xref: /plan9/sys/src/libc/386/main9p.s (revision e288d156a88911460b465926f0fb6de139f6d766)
1#define NPRIVATES	16
2
3TEXT	_mainp(SB), 1, $(8+NPRIVATES*4)
4	/* _tos = arg */
5	MOVL	AX, _tos(SB)
6	LEAL	8(SP), AX
7	MOVL	AX, _privates(SB)
8	MOVL	$NPRIVATES, _nprivates(SB)
9	/* _profmain(); */
10	CALL	_profmain(SB)
11	/* _tos->prof.pp = _tos->prof.next; */
12	MOVL	_tos+0(SB),DX
13	MOVL	4(DX),CX
14	MOVL	CX,(DX)
15	/* main(argc, argv); */
16	MOVL	inargc-4(FP), AX
17	MOVL	AX, 0(SP)
18	LEAL	inargv+0(FP), AX
19	MOVL	AX, 4(SP)
20	CALL	main(SB)
21
22loop:
23	MOVL	$_exits<>(SB), AX
24	MOVL	AX, 0(SP)
25	CALL	exits(SB)
26	MOVL	$_profin(SB), AX	/* force loading of profile */
27	JMP	loop
28
29TEXT	_savearg(SB), 1, $0
30	RET
31
32TEXT	_callpc(SB), 1, $0
33	MOVL	argp+0(FP), AX
34	MOVL	4(AX), AX
35	RET
36
37DATA	_exits<>+0(SB)/4, $"main"
38GLOBL	_exits<>+0(SB), $5
39