TIMECMP
读写所有 RV32/RV64 系统上均为 64 位精度的无符号 VS timer compare 值。RV32 中地址 0x24D 访问低 32 位,vstimecmph 访问高 32 位。
这个字段控制什么
- - 所有 RV32/RV64 系统上均为 64 位精度的无符号 VS timer compare 值。RV32 中地址 0x24D 访问低 32 位,vstimecmph 访问高 32 位。
vstimecmp 是 Sstc 的 64 位 VS timer compare CSR;当无符号 (time + htimedelta) mod 2^64 大于等于它时,VSTIP 最终置为 pending。
所有 RV32/RV64 系统上均为 64 位精度的无符号 VS timer compare 值。RV32 中地址 0x24D 访问低 32 位,vstimecmph 访问高 32 位。
vstimecmp 保存 guest 的 64 位 timer deadline。无符号 (time + htimedelta) mod 2^64 达到它时,hip.VSTIP 最终置位。
确认 Sstc/H。HS 直接访问 vstimecmp 受 mcounteren.TM 控制;VS guest 通过 stimecmp 别名访问还要求 menvcfg.STCE、henvcfg.STCE 和 hcounteren.TM 全部允许。
按无符号 64 位状态写 deadline;RV32 分别通过 vstimecmp/vstimecmph 更新低/高半。
比较对象是截断为 64 位的 time + htimedelta;中断递送仍遵循标准 enable 与 delegation 规则。
vstimecmp 表示 64 位VS timer compare 值;RV32 需要配合高半 CSR。
硬件把 vstimecmp 与无符号 (time + htimedelta) mod 2^64 比较;后者大于等于前者时 VSTIP 最终置位。