boards/BRINGUP.md R2/R3, FABRIC-3 SXXXIX. The entry stub cleans the cache over the image, builds an identity map (the image's GiB Normal, the rest Device) and enables MMU and caches at EL2 (or EL1); rpi5_mmu.c makes the devicetree's RAM Normal and the framebuffer uncached. Mailbox waits give up after one second; the buffer is cleaned around the exchange; the framebuffer address goes through dma-ranges, not a Pi 4 mask. New rpi5-rehearsal target runs the native image on QEMU virt at EL2. It found three more that would each have stopped the board: the PL011 shift (mine, c9519173; the host test asserted it), the GIC address not carried through /soc's ranges (new fdt_reg_address(), checked against the real Pi 5 DTB), and no timer IRQ at EL2 (HCR_EL2.IMO/FMO/AMO). Rehearsal: POST 1052 passed, same parity hash as UEFI. Standard acceptance on three ISAs: POST 1052, hash 0x82f4ae7cb2e2d424. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
linker/
GNU ld linker scripts for the LithosAnanke UEFI kernel. Three ISAs × two build variants (monolithic loader / split ELF kernel).
Files
| Script | ISA | Use |
|---|---|---|
starkernel-amd64.ld |
amd64 | Monolithic build (loader + kernel in one PE32+) |
starkernel-loader-amd64.ld |
amd64 | UEFI loader (split build) |
starkernel-loader-amd64-pe.ld |
amd64 | PE32+ format (split build) |
starkernel-kernel-amd64.ld |
amd64 | ELF kernel (split build) |
starkernel-loader-aarch64.ld |
aarch64 | UEFI loader (split build) |
starkernel-loader-aarch64-pe.ld |
aarch64 | PE32+ format (split build) |
starkernel-kernel-aarch64.ld |
aarch64 | ELF kernel (split build) |
starkernel-loader-riscv64.ld |
riscv64 | UEFI loader |
starkernel-kernel-riscv64.ld |
riscv64 | ELF kernel |
See also
Makefile.starkernel— selects the correct script perARCH- Project root