Is it a normal user-mode instruction?
No. These instructions are constrained by privilege level and extension support; user-mode legality must follow the privileged rules.
Return from an Smrnmi RNMI handler: restore pc from mnepc and privilege/virtualization state from mnstatus.
MNRET uses opcode 1110011 (0x73), funct3 000, funct12 011100000010. The rs1 field selects the source register, the 12-bit immediate provides the second operand, and rd selects the destination.
MNRET is the M-mode-only return instruction added by Smrnmi. It uses mnepc and mnstatus to return to the interrupted program counter, privilege mode, and virtualization mode, sets mnstatus.NMIE, and clears mstatus.MPRV if returning below M-mode.
MNRET is a system-level instruction defined by the privileged architecture. This page covers architectural semantics only, not platform firmware policy.
Understand this scenario with real code like «mnret # Return from NMI handler».
Understand this scenario with real code like «mnret # Return from NMI handler».
No. These instructions are constrained by privilege level and extension support; user-mode legality must follow the privileged rules.
No. Address translation, instruction fetch, and data-memory ordering use different fence/invalidation instructions.