CSR 位字段

RISC-V hstateen0h CSR 寄存器详解

地址 0x61C特权级 Hypervisor访问 HRW(Hypervisor 读写) / 32 位(RV32 高半)Hypervisor 与虚拟化 CSR

hstateen0h 是 Hypervisor state-enable CSR 的 RV32 高半。

字段映射

按 bit 字段理解 hstateen0h

8 个关键字段
31

C

读写

RV32 hstateen0[63],控制 VM 对 custom state 的访问。

这个字段控制什么

  • - RV32 hstateen0[63],控制 VM 对 custom state 的访问。

常见取值

hstateen0h.C
0关闭

对应 custom state不可访问;相关访问按 state-enable 规则 trap。

1开启

允许访问对应 custom state,前提是其他访问规则也允许。

打开官方手册
28

CSRIND

读写

RV32 hstateen0[60],控制 VM 对 VS indirect CSR alias 状态的访问。

这个字段控制什么

  • - RV32 hstateen0[60],控制 VM 对 VS indirect CSR alias 状态的访问。

常见取值

hstateen0h.CSRIND
0关闭

VS indirect CSR alias 状态不可访问;相关访问按 state-enable 规则 trap。

1开启

允许访问VS indirect CSR alias 状态,前提是其他访问规则也允许。

打开官方手册
27

AIA

读写

RV32 hstateen0[59],控制 VM 对非 CSRIND/IMSIC AIA 状态的访问。

这个字段控制什么

  • - RV32 hstateen0[59],控制 VM 对非 CSRIND/IMSIC AIA 状态的访问。

常见取值

hstateen0h.AIA
0关闭

该位控制的 AIA 状态不可访问;相关访问按 state-enable 规则 trap。

1开启

允许访问该位控制的 AIA 状态,前提是其他访问规则也允许。

打开官方手册
26

IMSIC

读写

RV32 hstateen0[58],控制 VM 对 guest IMSIC 状态的访问。

这个字段控制什么

  • - RV32 hstateen0[58],控制 VM 对 guest IMSIC 状态的访问。

常见取值

hstateen0h.IMSIC
0关闭

guest IMSIC 状态不可访问;相关访问按 state-enable 规则 trap。

1开启

允许访问guest IMSIC 状态,前提是其他访问规则也允许。

打开官方手册
25

CONTEXT

读写

RV32 hstateen0[57],控制 VM 对 context 状态的访问。

这个字段控制什么

  • - RV32 hstateen0[57],控制 VM 对 context 状态的访问。

常见取值

hstateen0h.CONTEXT
0关闭

scontext 等 context 状态不可访问;相关访问按 state-enable 规则 trap。

1开启

允许访问scontext 等 context 状态,前提是其他访问规则也允许。

打开官方手册
24

P1P13

读写

RV32 hstateen0[56],Privileged 1.13 相关高半状态使能位;Hypervisor 侧可移植含义需按当前官方扩展和实现确认。

这个字段控制什么

  • - RV32 hstateen0[56],Privileged 1.13 相关高半状态使能位;Hypervisor 侧可移植含义需按当前官方扩展和实现确认。

常见取值

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

打开官方手册
23

ENVCFG

读写

RV32 hstateen0[55],控制 VM 对环境配置状态的访问。

这个字段控制什么

  • - RV32 hstateen0[55],控制 VM 对环境配置状态的访问。

常见取值

hstateen0h.ENVCFG
0关闭

senvcfg 等环境配置状态不可访问;相关访问按 state-enable 规则 trap。

1开启

允许访问senvcfg 等环境配置状态,前提是其他访问规则也允许。

打开官方手册
22:0

RESERVED_OR_EXTENSION_DEFINED

按规范

RV32 hstateen0[54:32] 中未在本页列出的位不获得可移植 0/1 含义;按当前官方扩展定义、保留或 WPRI/WARL 规则处理。

这个字段控制什么

  • - RV32 hstateen0[54:32] 中未在本页列出的位不获得可移植 0/1 含义;按当前官方扩展定义、保留或 WPRI/WARL 规则处理。

常见取值

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

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

hstateen0h 是 Hypervisor state-enable CSR。它是 HS/M 侧的 Hypervisor 状态,不是 VS supervisor CSR 副本;guest 访问是否允许由 H 扩展和相关 state-enable/AIA/Sstc/Smcsrind 规则决定。

hstateen0h 的地址、访问类和宽度按官方 CSR 表核对:0x61C,HRW(Hypervisor 读写),32 位(RV32 高半)。
state-enable CSR 控制较低特权级或 VM 对扩展状态的访问;它们不影响 M-mode 对状态的访问。
hstateen0 中 CSRIND、AIA、IMSIC、CONTEXT、ENVCFG 等位有官方定义。
写入时只修改官方定义字段;WARL/WLRL/WPRI 和保留字段按官方规范与实现行为处理。

读这个 CSR 时先看什么

  • - hstateen0h 是 Hypervisor 级 CSR;独立地址按官方表属于 HRW(Hypervisor 读写) 访问类。
  • - guest/VS 软件不能通过 supervisor CSR alias 访问该 H-level CSR;相关访问由 H 扩展和可选扩展规则控制。

写入前的风险检查

  • - 写 hstateen0h 时只修改官方定义的目标字段,并保留 WPRI、保留位和未修改字段。

放回真实流程里理解

1

确认当前软件运行在可访问 Hypervisor CSR 的 M/HS 上下文。

2

确认定义该 CSR 的 H/AIA/Sstc/Smstateen/Smcsrind 等扩展已经实现。

3

按官方字段读写;guest 相关访问是否通过或 trap 由对应扩展规则和 state-enable 控制。

常见问题

hstateen0h 能通过 supervisor CSR alias 访问吗?

不能把 hstateen0h 当作 VS CSR 副本。它是 H-level CSR;guest/VS 访问相关功能时是否 trap 由 H 扩展和对应可选扩展规则决定。

hstateen0 的 AIA/IMSIC/CSRIND 位控制什么?

它们分别控制 VM 对 AIA、guest IMSIC 和间接 CSR alias 状态的访问。