CSR 位字段

RISC-V sireg CSR 寄存器详解

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

sireg(0x151)是 Sscsrind Supervisor indirect register alias,通过 siselect 当前值访问扩展状态。

字段映射

按 bit 字段理解 sireg

1 个关键字段
XLEN-1:0

ALIAS_DATA

依选择值而定

alias 数据窗口;具体读写语义由 siselect 当前值对应的扩展定义,未实现选择值下行为不能从该 CSR 名称推导。

这个字段控制什么

  • - alias 数据窗口;具体读写语义由 siselect 当前值对应的扩展定义,未实现选择值下行为不能从该 CSR 名称推导。

常见取值

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

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

sireg 不是独立固定含义寄存器;它是由 siselect 选择的 alias 窗口。

官方 Sscsrind 规定 sireg* 的行为由 siselect/sireg* 组合和对应扩展定义。
CTR 使用 siselect 0x200..0x2FF 访问 CTR entry;AIA IMSIC 使用 0x70..0xFF 访问 interrupt-file 状态。
未实现选择值下不要假设全 0、可写或固定副作用。

读这个 CSR 时先看什么

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

写入前的风险检查

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

放回真实流程里理解

1

先写 siselect 选择间接寄存器编号。

2

再通过 sireg 访问对应 alias 窗口。

3

如果所选扩展或窗口未实现,应按非法指令异常或官方规定的 UNSPECIFIED 行为处理。

常见问题

sireg 的位字段为什么不像普通 CSR?

因为它是 alias 窗口;位字段取决于 siselect 当前值和对应扩展。