CSR 位字段

RISC-V vsip CSR 寄存器详解

地址 0x244特权级 Hypervisor 直接访问 / VS 别名访问访问 HRW(Hypervisor 读写) / VSXLEN;AIA 为 64 位状态(RV32 高半由 vsiph 访问)Hypervisor 与虚拟化 CSR

vsip 是 guest 可见的 VS interrupt-pending CSR;V=1 时替代 sip,标准位按 hideleg 别名或只读零,AIA 将状态扩展为 64 位。

位作用速览
bit 3 = 只有第 3 位;bits 12..11 = 第 12 到第 11 位
高位 MSB低位 LSB
字段映射

按 bit 字段理解 vsip

9 个关键字段
63:14

Platform/AIA interrupt pending

WARL/别名/RO0

非 AIA 时,VSXLEN 范围内 bits 16 及以上供平台使用并按实现的 WARL pending 位处理,而 bits 15:14 只读零。AIA 对原因 14-63 规定:hideleg[i]=1 时别名 sip[i];否则 hvien[i]=1 时别名 hvip[i];两者均为 0 时只读零。RV32 的 AIA bits 63:32 通过 vsiph 访问。

这个字段控制什么

  • - 非 AIA 时,VSXLEN 范围内 bits 16 及以上供平台使用并按实现的 WARL pending 位处理,而 bits 15:14 只读零。AIA 对原因 14-63 规定:hideleg[i]=1 时别名 sip[i];否则 hvien[i]=1 时别名 hvip[i];两者均为 0 时只读零。RV32 的 AIA bits 63:32 通过 vsiph 访问。

常见取值

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

打开官方手册
13

LCOFIP

别名/RO0

实现 Shlcofideleg 且 hideleg[13]=1 时别名 sip.LCOFIP;否则在基础 H 规则下只读零。AIA 下 hideleg[13]=0 且 hvien[13]=1 时改为别名 hvip[13],两者均为 0 时只读零。

这个字段控制什么

  • - 实现 Shlcofideleg 且 hideleg[13]=1 时别名 sip.LCOFIP;否则在基础 H 规则下只读零。AIA 下 hideleg[13]=0 且 hvien[13]=1 时改为别名 hvip[13],两者均为 0 时只读零。

常见取值

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

打开官方手册
12:10

Reserved

只读零

标准保留位,读为零。

这个字段控制什么

  • - 标准保留位,读为零。

常见取值

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

打开官方手册
9

SEIP

只读别名/RO0

hideleg[10]=1 时为 hip.VSEIP 的只读别名;否则只读零。

这个字段控制什么

  • - hideleg[10]=1 时为 hip.VSEIP 的只读别名;否则只读零。

常见取值

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

打开官方手册
8:6

Reserved

只读零

标准保留位,读为零。

这个字段控制什么

  • - 标准保留位,读为零。

常见取值

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

打开官方手册
5

STIP

只读别名/RO0

hideleg[6]=1 时为 hip.VSTIP 的只读别名;否则只读零。hip.VSTIP 可由 hvip.VSTIP 与 Sstc 的 vstimecmp 信号共同形成。

这个字段控制什么

  • - hideleg[6]=1 时为 hip.VSTIP 的只读别名;否则只读零。hip.VSTIP 可由 hvip.VSTIP 与 Sstc 的 vstimecmp 信号共同形成。

常见取值

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

打开官方手册
4:2

Reserved

只读零

标准保留位,读为零。

这个字段控制什么

  • - 标准保留位,读为零。

常见取值

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

打开官方手册
1

SSIP

读写别名/RO0

hideleg[2]=1 时为 hip.VSSIP 的可写别名;否则只读零。hip.VSSIP 又是 hvip.VSSIP 的别名。

这个字段控制什么

  • - hideleg[2]=1 时为 hip.VSSIP 的可写别名;否则只读零。hip.VSSIP 又是 hvip.VSSIP 的别名。

常见取值

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

打开官方手册
0

Reserved

只读零

标准保留位,读为零。

这个字段控制什么

  • - 标准保留位,读为零。

常见取值

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

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

vsip 向 guest 展示 VS 中断 pending 状态。标准位由 hideleg 决定是 hip 对应位的别名还是只读零;AIA 为原因 13-63 增加 hvien/hvip 路径。

vsip 的地址和访问类为 0x244、HRW;基础 H 下宽度 VSXLEN,AIA 将状态扩展为 64 位并为 RV32 提供 vsiph。
hideleg[10/6/2]=1 时,SEIP/STIP/SSIP 分别别名 hip.VSEIP/VSTIP/VSSIP;否则只读零。
AIA 原因 13-63 优先按 hideleg 别名 sip,否则可按 hvien 别名 hvip,两者均为 0 时只读零;hvictl.VTI 还可截获 guest 的 sip 访问和可能清除非 SEIP pending 位的 CSR 写入。

读这个 CSR 时先看什么

  • - vsip 的独立 CSR 地址按官方表属于 HRW(Hypervisor 读写) 访问类;VS/VU guest 通常通过对应 supervisor CSR 别名访问 VS 状态。
  • - H 扩展定义 VSXLEN 位 vsip;AIA 将 vsip 状态扩展为 64 位,并在 RV32 通过 vsiph 提供高 32 位访问。

写入前的风险检查

  • - 标准 SEIP/STIP 位是只读别名;SSIP 在被 hideleg 委托时是可写别名。AIA 的原因 13-63 是否可写取决于其 sip/hvip 来源。
  • - AIA 中 hvictl.VTI=1 时,VS-mode 显式访问 sip 会触发 virtual-instruction exception;写入任何可能把 vsip 中非 SEIP 位从 1 清为 0 的 CSR 也会触发该异常,与实际写值或当前 pending 值无关。

放回真实流程里理解

1

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

2

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

3

基础 H 下,pending、vsie 和 vsstatus.SIE/当前模式共同控制 VS 中断;AIA 下 VS-level pending 当且仅当 vstopi 非零。

常见问题

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

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

vsip 主要保存什么?

vsip 展示 guest 可见的 VS 中断 pending 位;各位是否为别名、可写或只读零取决于 hideleg、扩展与 AIA 的 hvien 规则。