From f19b605aedddcfab1ee2abba87dfeaafe7c8c3c7 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Wed, 2 Jun 2010 12:58:06 -0500 Subject: [PATCH] ARM: Decode the 16 bit thumb versions of the REV* instructions. --- src/arch/arm/isa/formats/data.isa | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) 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: