RISC-V 定时器中断 Trap 路由
pending interrupt -> trap entry -> handler -> return
U-mode 正在运行
异步中断条件U-mode 正在执行,supervisor timer interrupt 已 pending,且相关 interrupt trap conditions 已满足。 STIP 表示 supervisor timer interrupt pending,STIE 是 cause 5 对应的使能位;还需要当前特权/全局使能条件允许接收。 这一步只说明 trap 条件已成立;节点 1 到节点 2 的连线表示 interrupt trap taken。
STIP 可由 SEE/SBI/M-mode 软件置位,或在 Sstc 下由 stimecmp 比较产生;本页先把来源折叠为已 pending。
Timer interrupt 容易混淆的边界
timer interrupt 是异步中断;EPC 保存被中断位置,不是 ECALL 式自动跳到下一条。
在 U/S 等可委托上下文中,mideleg[5] 改变 S/M trap 目标,不改变 cause 低位 5 或 interrupt bit;它不会让 M-mode trap 降级。
主图不建模 mtime/mtimecmp、Sstc stimecmp、SEE/SBI 或具体 OS tick;Sstc 下 STIP 反映比较结果也可存在延迟。
本页从 U-mode 被 supervisor timer interrupt 打断,且该中断已 pending 并允许接收后开始,是简化的非虚拟化 U/S/M trap-routing 模型。官方特权架构定义 STIP/STIE、cause 5、mideleg、trap entry/return 和可选 Sstc stimecmp;其中 mideleg 只影响可委托上下文中的目标选择,不会把 M-mode trap 路由到 S-mode。Sstc 下 STIP 对 stimecmp 比较的反映可以不是即时的,软件仍需允许偶发的 spurious timer interrupt。H 扩展相关的 MPV/SPV/VS 返回状态、具体平台 timer、mtime/mtimecmp 映射、SEE/SBI/firmware、interrupt controller 与 OS tick 策略不是本页结论的一部分。