CSR 位字段

RISC-V siph CSR 寄存器详解

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

siph(0x154)是 AIA 为 RV32 提供的 Supervisor interrupt pending 高半 CSR,用于访问 sip 的高 32 位中断挂起状态。

字段映射

按 bit 字段理解 siph

1 个关键字段
31:0

SIP_63_32

读写/按对应 pending 位定义

RV32 上 sip[63:32] 的高半访问窗口;具体可写性取决于对应中断挂起位和 AIA/实现定义。

这个字段控制什么

  • - RV32 上 sip[63:32] 的高半访问窗口;具体可写性取决于对应中断挂起位和 AIA/实现定义。

常见取值

siph high-half pending bits
0未挂起

仅对官方 AIA 定义且实现为有效的 RV32 sip[63:32] 高半 interrupt-pending 位:0 表示对应中断未挂起;保留、未定义或未实现位没有此固定语义。

1挂起

仅对官方 AIA 定义且实现为有效的 RV32 sip[63:32] 高半 interrupt-pending 位:1 表示对应中断挂起;递送还取决于 enable、全局中断、委托和 interrupt-controller 状态。

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

siph 是 RV32 下 sip 的高半访问入口;它不是独立于 sip 的另一套 pending 状态。

AIA 增加 sieh/siph 等 supervisor-level CSR 状态。
解释 siph 时应回到对应高位 interrupt pending 位,而不是把 31:0 当成新的低位中断编号。
mstateen0.AIA 会限制低于 M 模式的 AIA 状态访问;虚拟化场景下 hstateen0.AIA 也会限制 siph/sieh(RV32)和 stopi 的虚拟访问。

读这个 CSR 时先看什么

  • - 先确认当前 hart 实现 siph 所属扩展;未实现或权限不足的 CSR 访问会触发非法指令异常。
  • - 结合地址 0x154、最低访问特权级和官方访问类判断软件是否可以直接访问。
  • - 只把官方 AIA 定义且实现的 sip[63:32] 高半 pending 位解释为中断挂起状态;保留、未定义或未实现位不能假设有固定语义。

写入前的风险检查

  • - 写 siph 时只修改官方定义且实现为可写的高半 pending 位;只读零、保留、未定义或未实现位不能当作可写状态。
  • - 访问 siph 前确认处于 RV32 + AIA 环境,并考虑 mstateen0.AIA 以及虚拟化场景下 hstateen0.AIA 的访问限制。

放回真实流程里理解

1

在 RV32 + AIA 环境中,用 siph 读取 sip[63:32] 高位 pending 状态。

2

按对应高位中断源解释 pending 位;不要把 siph 当成新的低位中断编号空间。

3

结合 sie/sieh enable 位、sstatus.SIE、可能的 hideleg 限制以及外部中断控制器状态处理 pending 状态。

常见问题

siph 和 sip 是什么关系?

siph 是 RV32 上 sip 的高 32 位访问窗口。