CSR 位字段

RISC-V vstval CSR 寄存器详解

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

vstval 是 VSXLEN 位 WARL 的 guest trap 附加值;进入 VS-mode trap 时按 stval 的异常类型规则写入。

字段映射

按 bit 字段理解 vstval

1 个关键字段
VSXLEN-1:0

TVAL

读写

WARL 的 VS trap 附加值,必须能保存 stval 可保存的同一组值,包括所有有效虚拟地址和 0;若实现非法指令位回报,还必须保存规范要求的低位值范围。

这个字段控制什么

  • - WARL 的 VS trap 附加值,必须能保存 stval 可保存的同一组值,包括所有有效虚拟地址和 0;若实现非法指令位回报,还必须保存规范要求的低位值范围。

常见取值

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

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

vstval 为 VS-mode trap 提供异常专用附加值。它继承 stval 的有效地址、可选指令位、software-check 与零值规则。

vstval 的地址、访问类和宽度按官方 CSR 表核对:0x243,HRW(Hypervisor 读写),VSXLEN。
H 扩展规定 V=1 时 stval 访问替代到 vstval;V=0 时 vstval 不直接影响机器行为。
vstval 是 WARL,必须保存 stval 可保存的同一组值;具体 trap 写入值由异常类型与平台规则决定。

读这个 CSR 时先看什么

  • - vstval 的独立 CSR 地址按官方表属于 HRW(Hypervisor 读写) 访问类;VS/VU guest 通常通过对应 supervisor CSR 别名访问 VS 状态。
  • - H 扩展定义 vstval;V=1 时 stval 访问替代到 vstval,V=0 时 vstval 不直接影响机器行为。

写入前的风险检查

  • - vstval 是 WARL;实现可把不可表示的无效地址转换为另一可表示的无效地址,不能据此假定任意写入值都原样保留。

放回真实流程里理解

1

M/HS 软件可通过独立 CSR 地址访问 vstval 的 VS 副本。

2

当 V=1 时,guest 访问 stval 类 supervisor CSR 会替代到对应 VS 状态;直接访问独立 VS CSR 地址会触发 virtual-instruction exception。

3

进入 VS-mode trap 会同时写 vsepc、vscause 和 vstval;先读 vscause 再按对应异常规则解释 vstval。

常见问题

vstval 的独立地址能由 VS-mode 直接访问吗?

不能。H 扩展规定 V=1 时 guest 通过对应 supervisor CSR 别名访问 VS 状态;直接读写独立 VS CSR 地址会触发 virtual-instruction exception。

vstval 主要保存什么?

它按 vscause 对应的异常类型保存故障虚拟地址、可选指令位、software-check 原因或零。