POOL32A 000000 |
rt |
rs |
00 |
sel |
MTC0 01011 |
POOL32AXf 111100 |
6 |
5 |
5 |
2 |
3 |
5 |
6 |
MTC0 rt, rs |
microMIPS |
Move to Coprocessor 0 |
MTC0 rt, rs, sel |
microMIPS |
Move to Coprocessor 0 |
Move to Coprocessor 0
To move the contents of a general register to a coprocessor 0 register.
CPR[0, rs, sel] = GPR[rt]
The contents of general register rt are loaded into the coprocessor 0 register specified by the combination of rs and
sel. Not all coprocessor 0 registers support the sel field. In those instances, the sel field must be set to zero.
When the CP0 destination register specified is the EntryLo0 or the EntryLo1 register, bits 31:30 appear in the RI/XI fields of the destination register. This feature supports MIPS32 backward compatibility on a MIPS64 implementation.
Pre-Release 6: The results are UNDEFINED if coprocessor 0 does not contain a register as specified by rs and sel.
Release 6: Writes to a register that is reserved or not defined for the current core configuration are ignored.
data = GPR[rt] reg = rs if IsCoprocessorRegisterImplemented (0, reg, sel) then if (reg,sel = EntryLo1 or EntryLo0) then CPR[0,reg,sel]29..0 = data29..0 CPR[0,reg,sel]63 = data31 CPR[0,reg,sel]62 = data30 CPR[0,reg,sel]61:30 = 032 elseif (Width(CPR[0,reg,sel]) = 64) then CPR[0,reg,sel] = data else CPR[0,reg,sel] = data31..0 endif else if ArchitectureRevision() >= 6 then // nop (no exceptions, coprocessor state not modified) else UNDEFINED endif endif
Coprocessor Unusable, Reserved Instruction