rv32
Idea
The whole stack runs on 32-bit RISC-V, and rv32 boots join the dimensions every milestone must pass.
Today every milestone requires rv64 boots and rv32 compilation. The kernel boots on rv32 (Sv32), and most of the kernel’s bench cases boot on both widths; the servers, beamlet and the sessions are compiled for rv32 and not required to boot there (every dimension we claim).
Why it is not a goal
The development target, QEMU on rv64, is where every milestone’s work happens, and requiring rv32 boots of the full stack would double the bench for a width no planned deployment needs. Keeping rv32 compiling costs little and keeps width assumptions out of the code.
What it would need
- The full stack brought up on rv32, then rv32 boots added back to the required dimensions.
- Width-specific code kept where it is allowed: paging geometry, trap entry and the saved
context, and the ABI’s register encoding. Anywhere else a
target_pointer_widthcondition is a review failure; 64-bit values areu64, neverusize(memory layout, the ABI).
Attack cases: every attack case that boots on rv64 boots on rv32 too, with the same verdicts.