CSR 位字段

RISC-V vstimecmph CSR 寄存器详解

地址 0x25D特权级 Hypervisor 直接访问 / VS 别名访问访问 HRW(Hypervisor 读写) / 32 位(仅 RV32 高半)Hypervisor 与虚拟化 CSR

vstimecmph 是 RV32-only CSR,访问 64 位 vstimecmp 的高 32 位。VS-mode 通过 stimecmph 别名访问该状态,且受 Sstc、menvcfg.STCE、henvcfg.STCE、mcounteren.TM/hcounteren.TM 等门控影响。

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

按 bit 字段理解 vstimecmph

0 个关键字段
官方依据与检索要点

vstimecmph 只在 RV32 中提供,用来访问 VS timer compare 值的高 32 位。VS-mode 对 stimecmph 的访问实际替代到 vstimecmph 高半,并且只有在相关 Sstc 和计数器访问门控允许时才可用。

CSR 表给出 vstimecmph 地址 0x25D、HRW 访问类,并明确它是 RV32-only 的 vstimecmp 高 32 位。
vstimecmp 是 64 位比较值;当 (time + htimedelta) 截断为 64 位后大于等于 vstimecmp 时,hip.VSTIP 最终置位。
VS-mode 通过 stimecmp/stimecmph 别名访问 vstimecmp;Sstc 未实现、menvcfg.STCE/henvcfg.STCE 或 mcounteren.TM/hcounteren.TM 未允许时会按规范 trap。
RV64 不存在 vstimecmph 高半 CSR;软件应直接访问 64 位 vstimecmp。

读这个 CSR 时先看什么

  • - vstimecmph 的独立 CSR 地址按官方表属于 HRW(Hypervisor 读写)访问类;VS-mode 通过 stimecmph supervisor CSR 别名访问该 VS timer compare 高半状态。
  • - 读取前确认 H 与 Sstc 已实现,并确认 menvcfg.STCE、henvcfg.STCE、mcounteren.TM 和 hcounteren.TM 等访问门控允许。

写入前的风险检查

  • - 在 RV32 写 vstimecmph 只更新 64 位 vstimecmp 的 bits 63:32;需要与低半 vstimecmp 写入顺序一起避免临时触发非预期 timer compare。

放回真实流程里理解

1

确认 Sstc/H 扩展及相关 enable 位实现。

2

在 RV32 上按高半 CSR 访问顺序处理。

3

不要把 time offset 与 timer compare 混写。

常见问题

vstimecmph 是 64 位状态的一部分吗?

是。vstimecmph 是 RV32-only 高半 CSR,访问 64 位 vstimecmp 的 bits 63:32。

vstimecmph 与 time 有什么关系?

它参与 VS-level timer compare:当 time+htimedelta 达到或超过 vstimecmp 时,hip.VSTIP 最终置位,并按 V=1 时的中断使能和委托规则递送。