CSR 位字段

RISC-V vstvec CSR 寄存器详解

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

vstvec 是 VSXLEN 位虚拟 supervisor trap 向量 CSR;V=1 时替代 stvec,V=0 时不直接影响机器行为。

字段映射

按 bit 字段理解 vstvec

2 个关键字段
VSXLEN-1:2

BASE

WARL

VS trap handler 基址字段;使用为地址时低两位为零,非 Direct 模式可能要求更严格对齐。

这个字段控制什么

  • - VS trap handler 基址字段;使用为地址时低两位为零,非 Direct 模式可能要求更严格对齐。

常见取值

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

打开官方手册
1:0

MODE

WARL

VS trap 向量模式字段。

这个字段控制什么

  • - VS trap 向量模式字段。

常见取值

0Direct

同步异常和中断均跳转到 BASE。

1Vectored

同步异常跳转到 BASE;中断跳转到 BASE + 4 × cause。

>=2保留

保留编码;可移植软件不应写入或依赖。

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

vstvec 是 VS-mode 的 stvec 副本,保存 guest trap 入口 BASE 和 MODE。V=1 时替代 stvec,V=0 时不直接影响机器行为。

vstvec 的地址、访问类和宽度按本地特权手册核对:0x205,HRW,VSXLEN。
BASE 和 MODE 均为 WARL;MODE=0 为 Direct,MODE=1 为 Vectored,其它标准编码保留。
V=1 时 guest 对 stvec 的访问替代到 vstvec;直接访问独立 VS CSR 地址会触发 virtual-instruction exception。

读这个 CSR 时先看什么

  • - vstvec 是 H 扩展定义的 VSXLEN 位 HRW CSR,是 stvec 的 VS 副本。
  • - V=0 时 vstvec 不直接影响机器行为。

写入前的风险检查

  • - BASE 和 MODE 均为 WARL;MODE=0 为 Direct,MODE=1 为 Vectored,其它标准编码保留。

放回真实流程里理解

1

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

2

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

3

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

常见问题

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

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

vstvec 主要保存什么?

vstvec 保存 guest supervisor trap 向量基址和模式,用于 V=1 时的 VS trap 入口选择。