CSR 位字段

RISC-V stimecmph CSR 寄存器详解

地址 0x15D特权级 Supervisor 模式访问 读写 / RV32 only / 32Supervisor AIA、定时器与间接中断 CSR

stimecmph(0x15D)是 RV32 上 stimecmp 64 位值的高 32 位 CSR。

字段映射

按 bit 字段理解 stimecmph

1 个关键字段
31:0

STIMECMP_63_32

读写

RV32 上 stimecmp[63:32] 的高半访问窗口。

这个字段控制什么

  • - RV32 上 stimecmp[63:32] 的高半访问窗口。

常见取值

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

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

stimecmph 只在 RV32 中用于访问 stimecmp[63:32];RV64 直接通过 stimecmp 访问完整 64 位 timer compare 状态。

官方 Sstc 文本定义 stimecmp 为所有 RV32/RV64 系统上的 64 位寄存器。
RV32 低半是 stimecmp,高半是 stimecmph。
不要把 stimecmph 当成独立定时器。

读这个 CSR 时先看什么

  • - 先确认当前 hart 实现 stimecmph 所属扩展;未实现或权限不足的 CSR 访问会触发非法指令异常。
  • - 结合地址 0x15D、最低访问特权级和官方访问类判断软件是否可以直接访问。
  • - 读取保留、WPRI、WARL 或 WLRL 字段时不要假设固定值,应按官方规范和实现返回值解释。

写入前的风险检查

  • - 写 stimecmph 时只修改官方定义的目标字段,保留未修改位。
  • - 对 WARL/WLRL/WPRI 或保留字段按官方规范处理;不要把整个 CSR 当普通整数覆盖。

放回真实流程里理解

1

在 RV32 中读取/写入 stimecmp 的高 32 位。

2

与 stimecmp 低 32 位一起维护完整 64 位比较值。

3

按 Sstc 的 STIP 更新和 spurious interrupt 注意事项处理。

常见问题

stimecmph 在 RV64 上使用吗?

不是。它是 RV32-only 高半 CSR。