From: Gabe Black Date: Wed, 2 Jun 2010 17:58:06 +0000 (-0500) Subject: ARM: Decode the 16 bit thumb versions of the REV* instructions. X-Git-Tag: stable_2012_02_02~1281 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f19b605aedddcfab1ee2abba87dfeaafe7c8c3c7;p=gem5.git ARM: Decode the 16 bit thumb versions of the REV* instructions. --- diff --git a/src/arch/arm/isa/formats/data.isa b/src/arch/arm/isa/formats/data.isa index b1baca16b..217f1364b 100644 --- a/src/arch/arm/isa/formats/data.isa +++ b/src/arch/arm/isa/formats/data.isa @@ -649,15 +649,19 @@ def format Thumb16Misc() {{ (bits(machInst, 7, 3) << 1), (IntRegIndex)(uint32_t)bits(machInst, 2, 0)); case 0xa: - switch (bits(machInst, 7, 5)) { - case 0x0: - return new WarnUnimplemented("rev", machInst); - case 0x1: - return new WarnUnimplemented("rev16", machInst); - case 0x3: - return new WarnUnimplemented("revsh", machInst); - default: - break; + { + IntRegIndex rd = (IntRegIndex)(uint32_t)bits(machInst, 2, 0); + IntRegIndex rm = (IntRegIndex)(uint32_t)bits(machInst, 5, 3); + switch (bits(machInst, 7, 6)) { + case 0x0: + return new Rev(machInst, rd, rm); + case 0x1: + return new Rev16(machInst, rd, rm); + case 0x3: + return new Revsh(machInst, rd, rm); + default: + break; + } } break; case 0xb: