ARM: Decode the VMRS instruction.

This commit is contained in:
Gabe Black
2010-06-02 12:58:11 -05:00
parent fbf2ad5ae8
commit 6365d29c21

View File

@@ -255,9 +255,29 @@ def format ShortFpTransfer() {{
// A8-648
return new WarnUnimplemented("vmov", machInst);
} else if (a == 7) {
// A8-658
// B6-27
return new WarnUnimplemented("vmrs", machInst);
const IntRegIndex rt =
(IntRegIndex)(uint32_t)bits(machInst, 15, 12);
uint32_t specReg = bits(machInst, 19, 16);
switch (specReg) {
case 0:
specReg = MISCREG_FPSID;
break;
case 1:
specReg = MISCREG_FPSCR;
break;
case 6:
specReg = MISCREG_MVFR1;
break;
case 7:
specReg = MISCREG_MVFR0;
break;
case 8:
specReg = MISCREG_FPEXC;
break;
default:
return new Unknown(machInst);
}
return new Vmrs(machInst, rt, (IntRegIndex)specReg);
}
} else {
// A8-646