Download zig/kernel/main.zig from Snapkitty/phaser-ags: direct link, hf CLI and curl.
- Browser
- Download file 2.79 kB
-
https://huggingface.co/Snapkitty/phaser-ags/resolve/main/zig/kernel/main.zig
- Command line
-
hf download hf://Snapkitty/phaser-ags/zig/kernel/main.zig
-
curl -L -o main.zig https://huggingface.co/Snapkitty/phaser-ags/resolve/main/zig/kernel/main.zig
2.79 kB
| //! SPDX-License-Identifier: AGPL-3.0-or-later | |
| //! Copyright 2025 Ahmad Ali Parr / SnapKitty οΏ½ https://github.com/SNAPKITTYWEST/phaser-ags | |
| //! βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| //! PHASER AGS β Zig kernel entry point | |
| //! | |
| //! Boot sequence for the NAND-derived RV32I core on OMAP3530: | |
| //! 1. start.S: set stack, zero BSS, install trap vector | |
| //! 2. kernelMain: board init β page alloc β VM β timer β shell | |
| //! 3. Shell: interactive over UART, commands for debug/control | |
| //! | |
| //! Build: zig build-exe main.zig -target riscv64-freestanding-none | |
| //! -O ReleaseSmall -linker-script kernel.ld | |
| //! βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| const std = ; | |
| const driver = ; | |
| const trap = ; | |
| const memory = ; | |
| const timer = ; | |
| const process = ; | |
| const shell = ; | |
| // βββ Kernel entry (called from start.S after BSS clear) βββββββββ | |
| export fn kernelMain() callconv(.C) void { | |
| // ββ Phase 1: Board bring-up ββ | |
| driver.Board.earlyInit(); | |
| driver.Board.consoleInit(); | |
| driver.Uart.puts("ββββββββββββββββββββββββββββββββββββββ\n"); | |
| driver.Uart.puts("β Phaser AGS Universal Kernel β\n"); | |
| driver.Uart.puts("β RV32I on NAND-derived Chisel core β\n"); | |
| driver.Uart.puts("β Zig driver Β· Nim register macros β\n"); | |
| driver.Uart.puts("ββββββββββββββββββββββββββββββββββββββ\n"); | |
| // ββ Phase 2: Page allocator ββ | |
| memory.initPageAlloc(); | |
| // ββ Phase 3: Trap framework ββ | |
| trap.initDefaults(); | |
| driver.Uart.puts("Trap handlers installed\n"); | |
| // ββ Phase 4: Process table ββ | |
| process.init(); | |
| // ββ Phase 5: Timer (10ms tick at assumed 10 MHz CLINT) ββ | |
| timer.init(10_000_000, 10); | |
| timer.setCallback(process.schedTick); | |
| driver.Uart.puts("Timer: 10 ms ticks, scheduler callback\n"); | |
| // ββ Phase 6: Enable interrupts ββ | |
| driver.csrSet(driver.CSR.MIE, 1 << 7); // MTIE | |
| driver.csrSet(driver.CSR.MSTATUS, 0x08); // MIE | |
| driver.Uart.puts("Interrupts enabled\n"); | |
| // ββ Phase 7: Kernel shell ββ | |
| driver.Uart.puts("All subsystems up β entering shell\n\n"); | |
| shell.run(); | |
| } | |