Encoding:

EXTEND

11110

CP0

000

sel[2:0]

MFC0

00000

I8

01100

MOVR32

111

ry

r32

5

3

3

5

5

3

3

5

Format:

MFC0 ry, r32, sel

MIPS16e2

Move from Coprocessor 0 Extended

Purpose:

Move from Coprocessor 0 Extended

To move the contents of a coprocessor 0 register to a general register.

Description:

 GPR[ry] = CPR[0,r32,sel]

The contents of the coprocessor 0 register specified by the combination of r32 and sel are loaded into general register

ry. Not all coprocessor 0 registers support the sel field. In those instances, the sel field must be zero.

Restrictions:

The results are UNDEFINED if coprocessor 0 does not contain a register as specified by r32 and sel.

Operation:

reg = r32
if IsCoprocessorRegisterImplemented(0, reg, sel) then
   data = CPR[0, reg, sel]
   GPR[XLat[ry]] = data
else
   if ArchitectureRevision() >= 6 then
      GPR[XLat[ry]] = 0
   else
      UNDEFINED
   endif
endif

Exceptions:

Coprocessor Unusable, Reserved Instruction