CSR 位字段

RISC-V hgatp CSR 寄存器详解

地址 0x680特权级 Hypervisor访问 HRW(Hypervisor 读写) / HSXLENHypervisor 与虚拟化 CSR

hgatp 是 G-stage 地址转换根 CSR,保存模式、VMID 和 guest-physical 根页表 PPN。

字段映射

按 bit 字段理解 hgatp

3 个关键字段
63:60

MODE

读写

G 阶段地址转换模式编码;Bare 时其余字段必须为零。

这个字段控制什么

  • - G 阶段地址转换模式编码;Bare 时其余字段必须为零。

常见取值

RV64 hgatp.MODE
0Bare

不启用 G-stage 页式地址转换;选择 Bare 时其余字段必须写 0。

1-7保留

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

8Sv39x4

启用基于 Sv39x4 的 G-stage 页式地址转换。

9Sv48x4

启用基于 Sv48x4 的 G-stage 页式地址转换。

10Sv57x4

启用基于 Sv57x4 的 G-stage 页式地址转换。

11-15保留

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

打开官方手册
57:44

VMID

读写

虚拟机标识符,用于按虚拟机区分地址转换缓存。

这个字段控制什么

  • - 虚拟机标识符,用于按虚拟机区分地址转换缓存。

常见取值

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

打开官方手册
43:0

PPN

读写

客户物理根页表的物理页号。

这个字段控制什么

  • - 客户物理根页表的物理页号。

常见取值

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

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

hgatp 是 G-stage 地址转换 CSR。它是 HS/M 侧的 Hypervisor 状态,不是 VS supervisor CSR 副本;guest 访问是否允许由 H 扩展和相关 state-enable/AIA/Sstc/Smcsrind 规则决定。

hgatp 的地址、访问类和宽度按官方 CSR 表核对:0x680,HRW(Hypervisor 读写),HSXLEN。
MODE 选择 G-stage 地址转换模式;Bare 时其余字段必须为零。
VMID 用于按虚拟机标记地址转换缓存;PPN 保存 guest-physical 根页表物理页号。
写入时只修改官方定义字段;WARL/WLRL/WPRI 和保留字段按官方规范与实现行为处理。

读这个 CSR 时先看什么

  • - hgatp 是 Hypervisor 级 CSR;独立地址按官方表属于 HRW(Hypervisor 读写) 访问类。
  • - guest/VS 软件不能通过 supervisor CSR alias 访问该 H-level CSR;相关访问由 H 扩展和可选扩展规则控制。

写入前的风险检查

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

放回真实流程里理解

1

确认当前软件运行在可访问 Hypervisor CSR 的 M/HS 上下文。

2

确认定义该 CSR 的 H/AIA/Sstc/Smstateen/Smcsrind 等扩展已经实现。

3

按官方字段读写;guest 相关访问是否通过或 trap 由对应扩展规则和 state-enable 控制。

常见问题

hgatp 能通过 supervisor CSR alias 访问吗?

不能把 hgatp 当作 VS CSR 副本。它是 H-level CSR;guest/VS 访问相关功能时是否 trap 由 H 扩展和对应可选扩展规则决定。

hgatp.Bare 时要注意什么?

官方规则要求 Bare 模式下其余字段为零。