CSR 位字段

RISC-V mieh CSR 寄存器详解

地址 0x314特权级 Machine 模式访问 读写 / 32 位(仅 RV32,高半)Machine 状态、trap 与中断 CSR

实现 AIA 时,mieh 是 RV32 上 mie 的高 32 位中断使能 CSR,用于访问较高编号中断的使能位。

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

按 bit 字段理解 mieh

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

AIA 要求 mieh 存在于 RV32,用于访问 mie 的高 32 位。它不是 pending CSR;pending 高位由对应的 miph 表示。

AIA 官方 CSR 表将 mieh 定义为地址 0x314 的 Machine 读写高半 CSR,并要求它存在于 RV32 以访问 mie[63:32];未实现 AIA 时不能假定该 CSR 存在。
mieh bits 31:0 对应中断编号 63:32,这些中断编号供平台使用;miph 提供对应的 pending 高半。
若对应中断可能变为挂起,使能位必须可写;否则为只读 0。AIA 明确允许 mieh 访问到的位全部为只读 0。

读这个 CSR 时先看什么

  • - AIA 要求 mieh 存在于 RV32,作为地址 0x314 的 32 位高半 CSR 访问 mie[63:32];RV64 不存在该高半 CSR。未实现 AIA 时不能假定 mieh 存在。
  • - mieh 的 bit n 对应中断编号 n+32,并与 miph 的同位 pending 状态配对。
  • - AIA 允许 mieh 中访问到的位全部为只读 0;读取 0 不能证明对应编号一定存在可使能中断。

写入前的风险检查

  • - 只修改平台文档定义且经读取确认可写的中断使能位;其他位可能为只读 0。
  • - 使用 CSRRS/CSRRC 局部修改目标位并回读;不要把高半整体视为无条件可写寄存器。

放回真实流程里理解

1

初始化或进入相关特权流程时,软件先读取 mieh 了解当前状态。

2

根据字段定义只修改目标位,保留其余位的原值。

3

修改后再次读取或通过后续 trap/中断/上下文切换行为验证配置是否生效。

常见问题

mieh 和 miph 有什么区别?

在 RV32 上,mieh 是 mie[63:32] 的高半访问 CSR,miph 是 mip[63:32] 的高半访问 CSR;前者访问中断使能位,后者访问中断挂起位。