Dvorak
Dvorak

Dvorak Chen

page-tables


(deprecated)使用 Rust 为 RISC-V 设置页表

文章详细描述了RISC-V架构下页表的构建与satp寄存器配置过程。通过RootPageTable结构管理整张页表及其所有页帧和分配器,以LevelPageTable结构处理具体页表项的访问与创建,将4k页表内存视为512个PTE切片。PTE结构体以C语言布局存储64位页表项,通过检查V位判断有效性并动态分配下级页表。Map方法通过MapBlock参数(含虚拟页号、映射类型和权限)实现三级页表的层级映射,支持恒等映射(虚拟地址直接对应物理地址)和页帧映射两种模式。最终通过satp_token方法将根页表物理地址与RISC-V模式(8<<60)组合生成satp寄存器值,并通过汇编sfence.vma指令刷新转译旁路缓存完成页表启用。--Qwen3

Rust RISC-V riscv memory-management page-tables pte-construction satp-register rust-memory

  • 1