MNRET 会改变 MRET 或 SRET 吗?
不会。MRET 和 SRET 不受 mnstatus.NMIE 影响,也不会改变它;RNMI 返回由 MNRET 完成。
从 Smrnmi RNMI 处理程序返回:从 mnepc 恢复 PC,并从 mnstatus 恢复特权级/虚拟化状态。
MNRET 是 Smrnmi 增加的仅 M-mode 可执行返回指令。它使用 mnepc 和 mnstatus 返回到被 RNMI 打断时的 PC、特权级和虚拟化模式,设置 mnstatus.NMIE;若返回到低于 M-mode 的特权级,还会清除 mstatus.MPRV。
仅展示 Smrnmi 定义的 mnepc、MNPP/MNPV、NMIE 与条件性 MPRV 状态。
mnretMNRET 是特权架构定义的系统级指令,页面说明只覆盖官方规定的架构语义,不推断平台固件策略。
结合 «mnret # Return from NMI handler» 等实际代码理解该场景。
结合 «mnret # Return from NMI handler» 等实际代码理解该场景。
不会。MRET 和 SRET 不受 mnstatus.NMIE 影响,也不会改变它;RNMI 返回由 MNRET 完成。
当 mnstatus.MNPP 指示的返回特权级低于 M-mode 时,MNRET 会清除 mstatus.MPRV。