msrr
Move Two Registers to System Register (128-bit)
MSRR <sysreg>, <Xt>, <Xt+1>
Writes two general-purpose registers into a 128-bit system register.
Details
Writes two consecutive 64-bit general-purpose registers (Xt and Xt+1) into a 128-bit system register. This is an AArch64-only instruction requiring FEAT_SYSREG128 and may require elevated privilege depending on the system register being accessed. No condition flags are affected.
Pseudocode Operation
SYSREG[sysreg][63:0] ← Xt
SYSREG[sysreg][127:64] ← Xt+1
Example
MSRR sysreg, x3, Xt+1
Encoding
Binary Layout
1101010101
0
1
o0
op1
CRn
CRm
op2
Rt
Operands
-
sysreg
Reg -
Xt
Lo -
Xt+1
Hi
Reference (Arm A64 ISA)
Instruction Forms
| Encoding | Instruction | ISA | Bit pattern | ||
|---|---|---|---|---|---|
| 0xD5500000 | MSRR (<systemreg>|S<op0>_<op1>_<Cn>_<Cm>_<op2>), <Xt>, <Xt+1> | A64 | 1101010101 | 0 | 1 | o0 | op1 | CRn | CRm | op2 | Rt |
Description
Move two adjacent general-purpose registers to System Register allows the PE to write an AArch64 128-bit System register from two adjacent 64-bit general-purpose registers.
Operation
AArch64.SysRegWrite128(sys_op0, sys_op1, sys_crn, sys_crm, sys_op2, t, t2);