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