doze
Doze
Enters Doze power-saving mode (Supervisor only).
Details
The doze instruction is used to enter a power-saving mode, where the thread does not execute instructions and may consume less power. It sets various fields in the Machine State Register (MSR) based on the values from the Ultravisor Save/Restore Registers (USRR). If no pending exceptions are enabled by the new MSR value, the next instruction is fetched from a specified address; otherwise, an interrupt associated with the highest priority pending exception is generated.
Pseudocode Operation
MSR48 ← USRR148 | USRR149
MSR58 ← (USRR158 | USRR149) & ¬(USRR141 & USRR13 & (¬USRR149))
MSR59 ← (USRR159 | USRR149) & ¬(USRR141 & USRR13 & (¬USRR149))
MSR0:32 37:41 49:57 60:63 ← USRR10:32 37:41 49:57 60:63
NIA ← iea USRR00:61 || 0b00
Programming Note
The doze instruction is used to enter a power-saving mode, setting the Machine State Register (MSR) based on values from Ultravisor Save/Restore Registers. Ensure that no pending exceptions are enabled by the new MSR value to avoid unexpected interrupts. The next instruction address (NIA) is set from USRR00:61, so ensure this register holds a valid address. This instruction requires supervisor privilege level.