main9p.s 769 B

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