doze

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.

Example

doze

Encoding

Binary Layout
31
0
/
6
/
11
/
16
/
21
/
31
 
Format X-form
Opcode
Extension Privileged
Registers Altered MSR, USRR148, USRR149, USRR158, USRR141, USRR13, USRR00:61

Operands