CSR 位字段

RISC-V vsie CSR 寄存器详解

地址 0x204特权级 Hypervisor 直接访问 / VS 别名访问访问 HRW(Hypervisor 读写) / VSXLEN;AIA 下为 64 位Hypervisor 与虚拟化 CSR

vsie 是 VS-mode 的 supervisor interrupt-enable CSR;V=1 时替代 sie,标准位根据 hideleg 委托为别名或只读零,AIA 可将其扩展为 64 位。

字段映射

按 bit 字段理解 vsie

10 个关键字段
VSXLEN-1:16

Platform/custom interrupt enables

WARL/RO0

标准位 15:0 之外的 VS interrupt-enable 位;只有由平台或扩展定义且可 pending 的位才可写,否则为只读零或保留。

这个字段控制什么

  • - 标准位 15:0 之外的 VS interrupt-enable 位;只有由平台或扩展定义且可 pending 的位才可写,否则为只读零或保留。

常见取值

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

打开官方手册
15:14

Reserved

只读零

标准保留位,读为零。

这个字段控制什么

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

常见取值

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

打开官方手册
13

LCOFIE

别名/RO0

Shlcofideleg 实现且 hideleg[13]=1 时为 sie.LCOFIE 的别名;否则为只读零。

这个字段控制什么

  • - Shlcofideleg 实现且 hideleg[13]=1 时为 sie.LCOFIE 的别名;否则为只读零。

常见取值

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

打开官方手册
12:10

Reserved

只读零

标准保留位,读为零。

这个字段控制什么

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

常见取值

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

打开官方手册
9

SEIE

别名/RO0

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

这个字段控制什么

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

常见取值

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

打开官方手册
8:6

Reserved

只读零

标准保留位,读为零。

这个字段控制什么

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

常见取值

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

打开官方手册
5

STIE

别名/RO0

hideleg[6]=1 时为 hie.VSTIE 的别名;否则为只读零。

这个字段控制什么

  • - hideleg[6]=1 时为 hie.VSTIE 的别名;否则为只读零。

常见取值

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

打开官方手册
4:2

Reserved

只读零

标准保留位,读为零。

这个字段控制什么

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

常见取值

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

打开官方手册
1

SSIE

别名/RO0

hideleg[2]=1 时为 hie.VSSIE 的别名;否则为只读零。

这个字段控制什么

  • - hideleg[2]=1 时为 hie.VSSIE 的别名;否则为只读零。

常见取值

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

打开官方手册
0

Reserved

只读零

标准保留位,读为零。

这个字段控制什么

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

常见取值

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

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

vsie 是 VS supervisor interrupt-enable CSR。V=1 时 guest 对 sie 的访问替代到 vsie;标准低位按 hideleg 委托成为别名或只读零,AIA 可将该状态扩展为 64 位。

vsie 的地址和访问类按本地特权手册 CSR 表核对:0x204,HRW;本地 H 扩展正文定义其为 VSXLEN 位,AIA 规范可将其扩展为 64 位。
标准位 LCOFIE、SEIE、STIE、SSIE 只有在对应 hideleg 位允许委托时才是别名,否则为只读零。
RV32 上 AIA 高半 interrupt-enable 位通过 vsieh 访问;写入时只修改官方定义且可写的位。

读这个 CSR 时先看什么

  • - vsie 是 H 扩展定义的 VSXLEN 位 HRW CSR;AIA 实现时被扩展为 64 位。
  • - 当 V=1 时,guest 对 sie 的访问替代到 vsie;直接访问独立 VS CSR 地址会触发 virtual-instruction exception。

写入前的风险检查

  • - 标准位 13、9、5、1 只有在对应 hideleg 位允许委托时才可作为别名访问,否则为只读零。
  • - 未定义、保留或不能 pending 的中断位不得被当作固定的 1=使能位;RV32 高 32 位通过 vsieh 访问。

放回真实流程里理解

1

先确认 VS 中断是否通过 hideleg 委托给 VS-mode。

2

设置 vsie 中对应 enable 位,并同时检查 vsip pending 位和 vsstatus.SIE。

3

AIA/RV32 高半中断位通过 vsieh 访问,并受 AIA state-enable 位控制。

常见问题

vsie 的标准中断使能位总是可写吗?

不是。LCOFIE、SEIE、STIE、SSIE 只有在对应 hideleg 位为 1 时才作为别名有效;否则为只读零。

RV32 如何访问 AIA 扩展后的 vsie 高半?

AIA 定义 vsieh 作为 32 位高半 CSR,用于访问 vsie[63:32];这些高半位可能全部只是只读零。