diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2010-06-02 12:58:00 -0500 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2010-06-02 12:58:00 -0500 |
commit | 0116655674a93b1d05b97e531fe1849a5917dc9b (patch) | |
tree | 7a535f8bbedec87d250137829968286b5ae506b6 /src/arch/arm | |
parent | cef2e8eceec7829523c2b69e0d37f31b89b87d72 (diff) | |
download | gem5-0116655674a93b1d05b97e531fe1849a5917dc9b.tar.xz |
ARM: Expand the decoding for 32 bit thumb data processing immediate instructions.
Diffstat (limited to 'src/arch/arm')
-rw-r--r-- | src/arch/arm/isa/thumbdecode.isa | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/src/arch/arm/isa/thumbdecode.isa b/src/arch/arm/isa/thumbdecode.isa index d87374069..d62559b69 100644 --- a/src/arch/arm/isa/thumbdecode.isa +++ b/src/arch/arm/isa/thumbdecode.isa @@ -311,7 +311,44 @@ } 0x2: decode LTOPCODE_15 { 0x0: decode HTOPCODE_9 { - 0x0: WarnUnimpl::Data_processing_modified_immediate(); + 0x0: decode HTOPCODE_8_5 { + 0x0: decode LTRD { + 0xf: decode HTS { + 0x1: WarnUnimpl::tst(); // mod imm + } + default: WarnUnimpl::and(); // mod imm + } + 0x1: WarnUnimpl::bic(); // mod imm + 0x2: decode HTRN { + 0xf: WarnUnimpl::mov(); // mod imm + default: WarnUnimpl::orr(); // mod imm + } + 0x3: decode HTRN { + 0xf: WarnUnimpl::mvn(); // mod imm + default: WarnUnimpl::orn(); // mod imm + } + 0x4: decode LTRD { + 0xf: decode HTS { + 0x1: WarnUnimpl::teq(); // mod imm + } + default: WarnUnimpl::eor(); // mod imm + } + 0x8: decode LTRD { + 0xf: decode HTS { + 0x1: WarnUnimpl::cmn(); // mod imm + } + default: WarnUnimpl::add(); // mod imm + } + 0xa: WarnUnimpl::adc(); // mod imm + 0xb: WarnUnimpl::sbc(); // mod imm + 0xd: decode LTRD { + 0xf: decode HTS { + 0x1: WarnUnimpl::cmp(); // mod imm + } + default: WarnUnimpl::sub(); // mod imm + } + 0xe: WarnUnimpl::rsb(); // mod imm + } 0x1: WarnUnimpl::Data_processing_plain_binary_immediate(); } 0x1: WarnUnimpl::Branches_and_miscellaneous_control(); |