|
EXTEND 11110 |
CP0 000 |
sel[2:0] |
MTC0 00001 |
I8 01100 |
MOVR32 111 |
ry |
r32 |
|
5 |
3 |
3 |
5 |
5 |
3 |
3 |
5 |
MTC0 ry, r32, sel |
MIPS16e2 |
Move to Coprocessor 0 Extended |
Move to Coprocessor 0 Extended
To move the contents of a general register to a coprocessor 0 register.
CPR[0, r32, sel] = GPR[ry]
The contents of general register ry are loaded into the coprocessor 0 register specified by the combination of r32 and
sel. Not all coprocessor 0 registers support the sel field. In those instances, the sel field must be set to zero.
Unpredictable prior to MIPS16e2. The results are UNDEFINED if coprocessor 0 does not contain a register as specified by r32 and sel.
data = GPR[XLat[ry]]
reg = r32
if IsCoprocessorRegisterImplemented (0, reg, sel) then
CPR[0,reg,sel] = data
if (Config5MVH = 1) then
// The most-significant bit may vary by register. Only supported
// bits should be written 0. Extended LLAddr is not written with 0s,
// as it is a read-only register. BadVAddr is not written with 0s, as
// it is read-only
if (Config3LPA = 1) then
if (reg,sel = EntryLo0 or EntryLo1) then CPR[0,reg,sel]63:32 = 032
if (reg,sel = MAAR) then CPR[0,reg,sel]63:32 = 032 endif
// TagLo is zeroed only if the implementation-dependent bits
// are writeable
if (reg,sel = TagLo) then CPR[0,reg,sel]63:32 = 032 endif
if (Config3VZ = 1) then
if (reg,sel = EntryHi) then CPR[0,reg,sel]63:32 = 032 endif
endif
endif
endif
endif
Coprocessor Unusable
Reserved Instruction