Files
LithosAnanke/src/starkernel
Robert Allan JamesandClaude Sonnet 5 67e3fb7459
Build / build-amd64-iso (push) Canceled after 0s
Build / build-aarch64-iso (push) Canceled after 0s
Build / build-riscv64-img (push) Canceled after 0s
rpi5_native_boot.c: Pi 5 DTB->BootInfo constructor (FABRIC-3.md §IV.3 item 2)
rpi5_native_boot() populates the existing BootInfo struct from the
devicetree instead of UEFI protocols, then calls the existing, unmodified
kernel_main() -- the crux of why most of M1-M9 stays shared between the
UEFI and native boot paths. native_rpi5_entry.S now tail-calls into it
instead of halting.

memory_map is built from /memory's own reg, honoring the *root* node's
#address-cells/#size-cells (confirmed against bcm2712.dtsi's actual root
node -- <2>/<2> -- not assumed; a wrong cell width here would compile and
boot clean in QEMU while silently corrupting the real memory map on real
silicon). Required a new fdt_find_node_by_device_type() since /memory is
identified by device_type = "memory" per DT spec, not compatible.

args comes from /chosen's bootargs fed into the existing
cmdline_parse_ascii() (confirmed pure C99 with no UEFI coupling before
reusing it). framebuffer comes from the already-built
rpi5_mailbox_get_framebuffer() at a fixed 1920x1080x32 default -- no EDID
query exists in this codebase, flagged rather than guessed past.

Deliberately scoped out, not silently skipped: /reserved-memory is not
parsed. Carving reserved sub-ranges out of /memory's span needs
interval-splitting logic that would be written blind against hardware not
yet in hand -- exactly the kind of code that hides a bug until real
silicon. pmm.c's Pass 3 only ever clears pages this file lists as
EfiConventionalMemory, so the gap is "less usable RAM than optimal," never
"reserved RAM wrongly marked free." Left as its own future item.

Also fixes a real link failure this work surfaced: boot/cmdline.c was only
in LOADER_SRCS_BASE (the .efi target), not KERNEL_SRCS_BASE (the separate
.elf target arch/aarch64/*.c also wildcards into) -- added it there too.

Compile-only-verified; nothing in the existing UEFI/QEMU path calls
rpi5_native_boot(), so this cannot be exercised until real hardware.
Verified 3-arch boot to ok>/zuse)ok>.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019YcT3H2PQeyujrzjqS3Var
2026-09-04 14:42:32 -04:00
..
2026-09-01 12:07:32 -04:00

src/starkernel/

LithosAnanke — the bare-metal UEFI kernel that boots StarForth directly on hardware (amd64/aarch64/riscv64). Built only via Makefile.starkernel; the only valid acceptance test is the three-arch QEMU boot (see .claude/CLAUDE.md), never make test.

  • kernel_main.c — kernel entry point, driving the boot milestones (console init, PMM, VMM, interrupts, timers, kmalloc heap, VM bootstrap).
  • repl.c — kernel REPL.
  • doe_log.c — kernel-side DoE (Design of Experiments) metrics logging.

Subdirectories:

  • arch/{amd64,aarch64,riscv64}/ — per-architecture support (APIC/GIC/ PLIC interrupt controller, timers, boot/ISR assembly).
  • boot/ — UEFI loader, ELF loading, kernel command-line parsing.
  • capsule/ — capsule birth/run/load/validate pipeline.
  • hal/ — hardware-abstraction-layer implementation (console, framebuffer, VT100, memory, host services).
  • hash/ — XXHash64 content-addressing implementation.
  • math/ — kernel-build Q48.16 fixed-point arithmetic.
  • memory/ — physical/virtual memory managers and the kernel heap.
  • pci/ — PCI bus enumeration.
  • virtio/ — VirtIO block device driver.
  • vm/ — kernel VM subsystem (bootstrap, core interpreter, parity logging, capsule arena).

See include/starkernel/README.md for the corresponding headers.