CSR 位字段

RISC-V vsatp CSR 寄存器详解

地址 0x280特权级 Hypervisor 直接访问 / VS 别名访问访问 HRW(Hypervisor 读写) / VSXLENHypervisor 与虚拟化 CSR

vsatp 是 VS-stage 地址转换根 CSR,保存分页模式、ASID 和 VS 根页表 PPN。

字段映射

按 bit 字段理解 vsatp

3 个关键字段
63:60

MODE

读写

VS 阶段地址转换模式编码。

这个字段控制什么

  • - VS 阶段地址转换模式编码。

常见取值

0Bare

无分页地址转换;选择 Bare 时其余字段必须写 0。

1-7保留

RV64 satp.MODE 的保留编码;可移植软件不应写入或依赖。

8Sv39

启用 Sv39 页式虚拟内存。

9Sv48

启用 Sv48 页式虚拟内存。

10Sv57

启用 Sv57 页式虚拟内存。

11保留/Sv64 future

当前版本中作为未来 Sv64 方案预留。

12-13保留

RV64 satp.MODE 的保留编码;vsatp 在 V=1 时替代 satp 并沿用该模式表,可移植软件不应写入或依赖。

14-15自定义使用

RV64 satp.MODE 的 custom-use 编码;vsatp 沿用 satp 模式表。这些编码没有通用可移植含义,普通可移植软件不应依赖。

打开官方手册
59:44

ASID

读写

VS 地址空间标识符。

这个字段控制什么

  • - VS 地址空间标识符。

常见取值

这个字段更适合结合上下文字段解释,不用按固定枚举背诵。

打开官方手册
43:0

PPN

读写

VS 根页表物理页号。

这个字段控制什么

  • - VS 根页表物理页号。

常见取值

这个字段更适合结合上下文字段解释,不用按固定枚举背诵。

打开官方手册
官方依据与检索要点

vsatp 是 VS-stage 地址转换 CSR。独立 CSR 地址用于 M/HS 侧管理;当 V=1 时,guest 对相应 supervisor CSR 的访问会替代到 VS 状态,除非官方扩展另有规定。

vsatp 的地址、访问类和宽度按官方 CSR 表核对:0x280,HRW(Hypervisor 读写),VSXLEN。
vsatp 选择 guest virtual 到 guest physical 的 VS-stage 翻译根。
当 V=1 时,guest 访问 satp 会替代到 vsatp;直接访问 vsatp 独立地址会触发 virtual-instruction exception。
写入时只修改官方定义字段;WARL/WLRL/WPRI 和保留字段按官方规范与实现行为处理。

读这个 CSR 时先看什么

  • - vsatp 的独立 CSR 地址按官方表属于 HRW(Hypervisor 读写) 访问类;VS/VU guest 通常通过对应 supervisor CSR 别名访问 VS 状态。
  • - 读取前确认 H/AIA/Sstc/Smstateen/Smcsrind 等定义该 CSR 的扩展已经实现。

写入前的风险检查

  • - 写 vsatp 时只修改官方定义的目标字段,并保留 WPRI、保留位和未修改字段。

放回真实流程里理解

1

设置 MODE、ASID 和根页表 PPN。

2

guest 通过 satp alias 访问 VS-stage 状态。

3

结合 hgatp 管理两阶段转换。

常见问题

vsatp 与 hgatp 有什么区别?

vsatp 控制 VS-stage,hgatp 控制 G-stage;两者共同组成两阶段地址转换。

VS-mode 是否直接访问 vsatp 地址?

不直接访问独立 vsatp 地址;V=1 时访问 satp 会替代到 vsatp。