From a8b56b452c62d761a698d91cc16c1d93bfe14204 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Wed, 2 Jun 2010 12:58:11 -0500 Subject: ARM: Decode the VMSR instruction. --- src/arch/arm/isa/formats/fp.isa | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'src/arch') diff --git a/src/arch/arm/isa/formats/fp.isa b/src/arch/arm/isa/formats/fp.isa index 303273d6e..a51960641 100644 --- a/src/arch/arm/isa/formats/fp.isa +++ b/src/arch/arm/isa/formats/fp.isa @@ -224,9 +224,23 @@ def format ShortFpTransfer() {{ // A8-648 return new WarnUnimplemented("vmov", machInst); } else if (a == 0x7) { - // A8-660 - // B6-29 - return new WarnUnimplemented("vmsr", 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 8: + specReg = MISCREG_FPEXC; + break; + default: + return new Unknown(machInst); + } + return new Vmsr(machInst, (IntRegIndex)specReg, rt); } } else if (l == 0 && c == 1) { if (bits(a, 2) == 0) { -- cgit v1.2.3