You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

禁用中断时的中断处理机制:执行ecall切换模式后中断触发的问题

关于RISC-V中断处理的两个问题解答

1. 当中断被禁用时,中断是如何被处理的?

  • 当中断被禁用(比如sstatus寄存器的SIE位被置0)时,CPU会直接忽略当前触发的中断请求,不会触发中断服务程序(ISR)。
  • 未被响应的中断会被硬件中断控制器暂存在挂起寄存器中,保持"待处理"状态。
  • 直到中断被重新启用(SIE位被置1),CPU才会在指令执行的间隙检查挂起的中断,按照优先级依次处理。

2. 执行ecall切换至系统模式后触发中断的行为

  • 执行ecall从用户模式进入系统模式时,硬件会自动将sstatus.SIE置0,此时系统模式下中断处于禁用状态。
  • 若此时有中断触发,该中断会被标记为挂起,不会打断当前系统模式下的代码执行流程。
  • 只有当后续通过csrs sstatus, 0x00000002这类指令重新置位SIE启用中断后,CPU才会响应这个挂起的中断,进入对应的中断处理流程。
  • 如果期间有多个中断触发,硬件会依据预设的中断优先级,在启用后优先处理优先级高的中断。

内容的提问来源于stack exchange,提问作者mdjukan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 09:37:09