CSR 位字段

RISC-V vsscratch CSR 寄存器详解

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

vsscratch 是 VSXLEN 位虚拟 supervisor scratch CSR;V=1 时替代 sscratch,其内容本身不直接影响机器行为。

字段映射

按 bit 字段理解 vsscratch

1 个关键字段
VSXLEN-1:0

SCRATCH

读写

完整 VSXLEN scratch 值;特权架构不定义内部位字段,内容不直接影响机器行为。

这个字段控制什么

  • - 完整 VSXLEN scratch 值;特权架构不定义内部位字段,内容不直接影响机器行为。

常见取值

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

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

vsscratch 是 VS-mode 的 sscratch 副本,保存完整 VSXLEN 软件 scratch 值;其内容本身不直接影响机器行为。

vsscratch 的地址、访问类和宽度按本地特权手册核对:0x240,HRW,VSXLEN。
V=1 时 guest 对 sscratch 的访问替代到 vsscratch。
特权架构不定义 vsscratch 内部位字段;内容由软件约定解释。

读这个 CSR 时先看什么

  • - vsscratch 是 H 扩展定义的 VSXLEN 位 HRW CSR,是 sscratch 的 VS 副本。
  • - 其内容不会直接影响机器行为,解释完全由软件约定决定。

写入前的风险检查

  • - vsscratch 没有 WPRI/WARL 子字段;作为完整 VSXLEN scratch 值读写。

放回真实流程里理解

1

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

2

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

3

按官方字段更新,不把 VS 状态混同为普通 HS supervisor 状态。

常见问题

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

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

vsscratch 主要保存什么?

vsscratch 保存 guest trap handler 使用的软件 scratch 值;其内容不直接影响机器行为。