summaryrefslogtreecommitdiff
path: root/src/arch/arm
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2010-06-02 12:58:00 -0500
committerGabe Black <gblack@eecs.umich.edu>2010-06-02 12:58:00 -0500
commit0116655674a93b1d05b97e531fe1849a5917dc9b (patch)
tree7a535f8bbedec87d250137829968286b5ae506b6 /src/arch/arm
parentcef2e8eceec7829523c2b69e0d37f31b89b87d72 (diff)
downloadgem5-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.isa39
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();