]> git.lizzy.rs Git - plan9front.git/blob - sys/src/libc/amd64/main9p.s
merge
[plan9front.git] / sys / src / libc / amd64 / main9p.s
1 #define NPRIVATES       16
2
3 TEXT _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
20 loop:
21         MOVQ    $_exits<>(SB), RARG
22         CALL    exits(SB)
23         MOVQ    $_profin(SB), AX        /* force loading of profile */
24         JMP     loop
25
26 TEXT    _savearg(SB), 1, $0
27         MOVQ    RARG, AX
28         RET
29
30 TEXT    _saveret(SB), 1, $0
31         RET                             /* we want RARG in RARG */
32
33 TEXT    _callpc(SB), 1, $0
34         MOVQ    8(RARG), AX
35         RET
36
37 DATA    _exits<>+0(SB)/4, $"main"
38 GLOBL   _exits<>+0(SB), $5