mtmsrd

Move To Machine State Register Doubleword

mtmsrd RS,L
mtmsrd RS

Sets the Machine State Register (MSR) based on the contents of a source register and an L field.

Details

The MSR is set based on the contents of register RS and the value of the L field. If L=0, specific bits are updated based on logical operations involving the contents of RS and the current state of the MSR. If L=1, only certain bits (48 and 62) from RS are placed into the corresponding bits of the MSR.

Pseudocode Operation

if L = 0 then
    MSR48 ← (RS)48 | (RS)49
    if MSRPR = 1 then
        MSREE, MSRIR, MSRDR ← 1
    if MSRS HV PR = 0b110 then
        MSRIR, MSRDR ← 0
else
    MSR48 62 ← (RS)48 62

Programming Note

If this instruction sets MSRPR to 1, it also sets MSREE, MSRIR, and MSRDR to 1. If this instruction results in MSRS HV PR being equal to 0b110, it also sets MSRIR and MSRDR to 0. If the only MSR bits to be altered are MSREE RI, to obtain the best performance L=1 should be used. mtmsrd serves as both a basic and an extended mnemonic. The Assembler will recognize an mtmsrd mnemonic with two operands as the basic form, and an mtmsrd mnemonic with one operand as the extended form. In the extended form the L operand is omitted and assumed to be 0.

Extended Mnemonics

Extended Mnemonic Equivalent Instruction
mtmsrd

Example

mtmsrd r3, 0

Encoding

Binary Layout
31
0
RS
6
/
30
L
31
178
/
 
Format X-form
Opcode 0x7C000164
Extension Privileged
Registers Altered MSR

Operands

  • RS
    Source
  • L
    Load