Punch list §25 item 4.3.5b complete. sie.SEIE enabled, PLIC threshold/claim/complete wired into the trap handler. Verified with a UART-loopback synthetic interrupt (PLIC has no software set-pending register, unlike GICv2): claim_count=1, last_irq=10, IIR confirms genuine receive-data cause, byte matched exactly. Self-test code run once for evidence then fully reverted, per Captain Bob's ruling; only the permanent substrate remains, no source enabled by default. Three-arch acceptance boot clean, zero exceptions. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
src/starkernel/arch/riscv64/
RISC-V 64-bit architecture support for LithosAnanke.
arch.c— architecture init entry point.apic.c— PLIC (Platform-Level Interrupt Controller) stub, namedapic.cto match the shared per-arch file-naming convention across amd64/aarch64/riscv64 (RISC-V has no Local APIC). Satisfies the commonapic_init()/EOI call sites without real PLIC bring-up yet; deferred to a later milestone.timer.c— timer setup (heartbeat tick source).interrupts.c— trap vector setup and interrupt dispatch.boot.S— early boot assembly.isr.S— interrupt service routine stubs.
No kernel_entry.S — see Makefile.starkernel for how the riscv64 loader
image is produced (ELF → scripts/gen_pe_reloc.py-patched relocations →
objcopy → PE).