PLATFORM
平台定义;逐位可写或只读中断编号 16 及以上供平台使用;mip 中每个对应挂起位可写或只读,可写位写 0 可清除,只读位必须由其他机制清除。
这个字段控制什么
- - 中断编号 16 及以上供平台使用;mip 中每个对应挂起位可写或只读,可写位写 0 可清除,只读位必须由其他机制清除。
常见取值
这个字段更适合结合上下文字段解释,不用按固定枚举背诵。
机器中断挂起寄存器,指示当前有哪些中断处于挂起状态。
中断编号 16 及以上供平台使用;mip 中每个对应挂起位可写或只读,可写位写 0 可清除,只读位必须由其他机制清除。
这个字段更适合结合上下文字段解释,不用按固定枚举背诵。
标准中断原因空间中的固定零位。
这个字段更适合结合上下文字段解释,不用按固定枚举背诵。
本地计数器溢出中断挂起;若实现 Sscofpmf,则在 mip 中读写,并反映任一 mhpmeventn.OF 置位导致的本地计数器溢出中断请求;未实现 Sscofpmf 时为只读 0。
LCOFIP 对应中断未挂起。
LCOFIP 对应中断挂起;是否递送还取决于 enable、全局中断和委托状态。
实现 H 扩展时为Supervisor guest external interrupt挂起位,并与 hip.SGEIP 别名;未实现 H 时为只读 0。
这个字段更适合结合上下文字段解释,不用按固定枚举背诵。
机器模式外部中断挂起(只读,由平台特定机制设置)
MEIP 对应中断未挂起。
MEIP 对应中断挂起;是否递送还取决于 enable、全局中断和委托状态。
实现 H 扩展时为Virtual supervisor external interrupt挂起位,并与 hip.VSEIP 别名;未实现 H 时为只读 0。
这个字段更适合结合上下文字段解释,不用按固定枚举背诵。
监管者外部中断挂起;若实现 S 模式则在 mip 中可写,并与外部中断控制器信号逻辑或后作为读取值;CSR 写入/读改写只更新软件可写位。未实现 S 模式时为只读 0。
SEIP 对应中断未挂起。
SEIP 对应中断挂起;是否递送还取决于 enable、全局中断和委托状态。
标准中断原因空间中的固定零位。
这个字段更适合结合上下文字段解释,不用按固定枚举背诵。
机器模式定时器中断挂起(只读,由硬件根据 mtime >= mtimecmp 自动设置)
MTIP 对应中断未挂起。
MTIP 对应中断挂起;是否递送还取决于 enable、全局中断和委托状态。
实现 H 扩展时为Virtual supervisor timer interrupt挂起位,并与 hip.VSTIP 别名;未实现 H 时为只读 0。
这个字段更适合结合上下文字段解释,不用按固定枚举背诵。
监管者定时器中断挂起;若未实现 stimecmp,则在 mip 中可写;若实现 stimecmp,则为只读并反映 stimecmp 产生的监管者定时器中断信号;未实现 S 模式时为只读 0。
STIP 对应中断未挂起。
STIP 对应中断挂起;是否递送还取决于 enable、全局中断和委托状态。
标准中断原因空间中的固定零位。
这个字段更适合结合上下文字段解释,不用按固定枚举背诵。
机器软件中断挂起,通常只读并反映内存映射 msip。若系统仅有一个 hart,或平台改用机器外部中断递送机器级处理器间中断,则 mip.MSIP 与 mie.MSIE 可以同为只读 0。
MSIP 对应中断未挂起。
MSIP 对应中断挂起;是否递送还取决于 enable、全局中断和委托状态。
实现 H 扩展时为Virtual supervisor software interrupt挂起位,并与 hip.VSSIP 别名;未实现 H 时为只读 0。
这个字段更适合结合上下文字段解释,不用按固定枚举背诵。
监管者软件中断挂起;若实现 S 模式则在 mip 中可写,也可由平台特定中断控制器置 1;未实现 S 模式时为只读 0。
SSIP 对应中断未挂起。
SSIP 对应中断挂起;是否递送还取决于 enable、全局中断和委托状态。
标准中断原因空间中的固定零位。
这个字段更适合结合上下文字段解释,不用按固定枚举背诵。
mip 是地址 0x344 的 MXLEN 位 M 模式中断挂起 CSR。每个位报告同号中断是否挂起;是否进入 M 模式还取决于 mie、mstatus.MIE 和 mideleg。各位可写性按位定义。
使用 csrr/csrw/csrs/csrc 指令读写 mip,参考 RISC-V Privileged Architecture §2.8
mip 指示各中断源是否处于挂起状态。mip 与 mie 同一位位置对应同一中断源。MSIP 在 mip 中反映机器软件中断挂起状态;机器软件中断通常通过写内存映射的 msip 寄存器触发,而不是直接写 mip.MSIP。
SSIP(bit1) S模式软件中断挂起 | MSIP(bit3) M模式软件中断挂起 | STIP(bit5) S模式定时器中断挂起 | MTIP(bit7) M模式定时器中断挂起 | SEIP(bit9) S模式外部中断挂起 | MEIP(bit11) M模式外部中断挂起
读取 mip 查看哪些中断源处于挂起状态。
用 mie、mstatus.MIE 和 mideleg 判断挂起中断是否会进入 M 模式。
对可写 pending 位可写 0 清除;对只读 pending 位使用对应平台或定时器机制清除。
不能只看 CSR 名称判断。官方 CSR 地址表给出最低访问特权级;mip 位于 0x344,最低访问级为 M 模式。权限不足或访问未实现 CSR 时会触发非法指令异常。
写 mip 时必须逐位区分可写和只读 pending 位。可写 pending 位写 0 可清除;只读 pending 位需要通过平台中断控制器、mtimecmp/stimecmp 或内存映射 msip 等对应机制清除。