CSR 位字段

RISC-V hcontext CSR 寄存器详解

地址 0x6A8特权级 Hypervisor访问 HRW(Hypervisor 读写) / HSXLENHypervisor 与虚拟化 CSR

hcontext 是 Sdtrig 定义的 Hypervisor-mode context CSR。

字段映射

按 bit 字段理解 hcontext

2 个关键字段
13:0

HCONTEXT

WARL

mcontext.hcontext 的别名。M-mode 或 HS-mode 软件可写入 context number,供仅在该 context 中触发的 trigger 使用;实现可将任意数量的高位硬连线为零。

这个字段控制什么

  • - mcontext.hcontext 的别名。M-mode 或 HS-mode 软件可写入 context number,供仅在该 context 中触发的 trigger 使用;实现可将任意数量的高位硬连线为零。

常见取值

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

打开官方手册
XLEN-1:14

RESERVED_ZERO

只读零

当前有效 XLEN 中 mcontext.hcontext 字段以外的位;读取为零。

这个字段控制什么

  • - 当前有效 XLEN 中 mcontext.hcontext 字段以外的位;读取为零。

常见取值

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

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

hcontext 是可选 Sdtrig CSR,也是 mcontext.hcontext[13:0] 的别名;它使 HS-mode 能设置供按 context 触发的 trigger 使用的值。

hcontext 仅在 H 扩展存在时可选实现;实现它时也必须实现 mcontext。
它在 HS、M 和 Debug Mode 可访问;实现 Smstateen 时,HS-mode 访问由 mstateen0.CONTEXT(bit 57)控制。
该 CSR 是 mcontext.hcontext[13:0] 的别名,高位读取为零;字段为 WARL。

读这个 CSR 时先看什么

  • - hcontext 是可选的 Hypervisor 级 CSR;仅可在 H 扩展已实现时实现,且实现 hcontext 时必须实现 mcontext。
  • - 它只能在 HS-mode、M-mode 和 Debug Mode 访问;若实现 Smstateen,HS-mode 访问由 mstateen0.CONTEXT(bit 57)控制。

写入前的风险检查

  • - 仅在 hcontext 已实现且当前为 HS、M 或 Debug Mode 时访问;若实现 Smstateen,HS-mode 还必须受 mstateen0.CONTEXT 允许。

放回真实流程里理解

1

确认 H 和 Sdtrig 已实现,并确认 mcontext 也已实现。

2

在 HS-mode 时,确认实现 Smstateen 时 mstateen0.CONTEXT 已允许访问。

3

仅按 WARL 规则更新 hcontext[13:0],并将其用于按 context 限定的 trigger。

常见问题

hcontext 能通过 supervisor CSR alias 访问吗?

不能。hcontext 是 mcontext.hcontext[13:0] 的 HS-mode 别名,而不是 VS supervisor CSR alias。