Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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_width condition is a review failure; 64-bit values are u64, never usize (memory layout, the ABI).

Attack cases: every attack case that boots on rv64 boots on rv32 too, with the same verdicts.