RISC-V FDPIC/NOMMU toolchain/runtime support
summary
Proposes an FDPIC psABI for RISC‑V that reserves an ABI GP register per module so read‑only text can be shared on NOMMU systems while data maps independently; introduces a function descriptor table (FDT) holding (PC, GP) pairs for every external function, forces PLT/PLT‑slot changes (16‑byte slots) and extra prologue stack save/restore of GP, and uses 12‑bit GP‑offset relaxations. Requires GCC/gas/ld changes, dynamic loader updates (glibc/musl) and a small kernel patch; design is early stage, not yet fully implemented.
AI-written summary · about
chapters (16)
- 0:00Intro
- 0:16Western Digital
- 2:19Overview
- 3:44Design Goals and Non-Goals
- 5:53MMU PIC Shared Program Mapping
- 8:00NOMMU PIC (Flat) Unshared Program Mapping
- 9:11NOMMU FDPIC Shared Program Mapping
- 9:54Text To Data Addressing
- 11:02GP-Relative Addressing
- 13:43Local Data Addressing
- 14:40External (Preemptible) Data Addressing Using the Global Offset Table (GOT)
- 17:29Procedure Calls
- 21:25FDT Structure Dynamic relocation required
- 24:15Taking A Function's Address
- 25:22Lazy Binding
- 25:33Implementation Goals
related talks
24mRISC-V IOMMU
24mRISC V LLVM: Towards A Production-Ready LLVM-Based Toolchain
16mRISC-V DSP (P) Extension Proposal
07mA Practical Implementation Of A Platform Level Interrupt Controller (PLIC)
15mCompared Analysis of GCC Codegen for AArch64 and RISC-V
10mRISC5: Improving Support For RISC-V In Gem5
20mThe Application of RISC-V Extensions to Automotive Zonal Controllers
12mThe Case For Expanding The 16 GPR Standard Beyond RV32E
