它是用户态普通指令吗?
不是。该类指令受特权级和扩展支持约束,用户态是否可执行必须看官方特权规则。
从 Smrnmi RNMI 处理程序返回:从 mnepc 恢复 PC,并从 mnstatus 恢复特权级/虚拟化状态。
MNRET 使用 opcode 1110011(0x73)、funct3 000、funct12 011100000010。rs1 字段选择源寄存器,12 位立即数提供第二操作数,rd 选择目标寄存器。
MNRET 是 Smrnmi 增加的仅 M-mode 可执行返回指令。它使用 mnepc 和 mnstatus 返回到被 RNMI 打断时的 PC、特权级和虚拟化模式,设置 mnstatus.NMIE;若返回到低于 M-mode 的特权级,还会清除 mstatus.MPRV。
MNRET 是特权架构定义的系统级指令,页面说明只覆盖官方规定的架构语义,不推断平台固件策略。
结合 «mnret # Return from NMI handler» 等实际代码理解该场景。
结合 «mnret # Return from NMI handler» 等实际代码理解该场景。
不是。该类指令受特权级和扩展支持约束,用户态是否可执行必须看官方特权规则。
不能简单替代。地址转换、指令获取和数据内存排序分别有不同的 fence/失效指令。