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 | 003346077f466e4a5cabdd9e80ea05009bcf9204 (patch) | |
tree | e38dedfd42a7698e33d6eab2991f75441521d437 /src/arch/arm/isa | |
parent | 0d4c4cacabebdc01121b634fd82134f955f44a05 (diff) | |
download | gem5-003346077f466e4a5cabdd9e80ea05009bcf9204.tar.xz |
ARM: Flesh out 32 bit thumb load word decoding.
Diffstat (limited to 'src/arch/arm/isa')
-rw-r--r-- | src/arch/arm/isa/bitfields.isa | 3 | ||||
-rw-r--r-- | src/arch/arm/isa/thumbdecode.isa | 17 |
2 files changed, 19 insertions, 1 deletions
diff --git a/src/arch/arm/isa/bitfields.isa b/src/arch/arm/isa/bitfields.isa index c9696a115..1dcbddec3 100644 --- a/src/arch/arm/isa/bitfields.isa +++ b/src/arch/arm/isa/bitfields.isa @@ -143,6 +143,7 @@ def bitfield HTOPCODE_8 htopcode8; def bitfield HTOPCODE_8_7 htopcode8_7; def bitfield HTOPCODE_8_6 htopcode8_6; def bitfield HTOPCODE_8_5 htopcode8_5; +def bitfield HTOPCODE_7 htopcode7; def bitfield HTOPCODE_6_5 htopcode6_5; def bitfield HTOPCODE_5_4 htopcode5_4; def bitfield HTOPCODE_4 htopcode4; @@ -151,6 +152,8 @@ def bitfield HTRN htrn; def bitfield HTS hts; def bitfield LTOPCODE_15 ltopcode15; +def bitfield LTOPCODE_11_8 ltopcode11_8; +def bitfield LTOPCODE_7_6 ltopcode7_6; def bitfield LTOPCODE_7_4 ltopcode7_4; def bitfield LTOPCODE_4 ltopcode4; diff --git a/src/arch/arm/isa/thumbdecode.isa b/src/arch/arm/isa/thumbdecode.isa index 682a98249..3d8e56a48 100644 --- a/src/arch/arm/isa/thumbdecode.isa +++ b/src/arch/arm/isa/thumbdecode.isa @@ -394,7 +394,22 @@ 0x1: decode HTOPCODE_6_5 { 0x0: WarnUnimpl::Load_byte_memory_hints(); 0x1: WarnUnimpl::Load_halfword_memory_hints(); - 0x2: WarnUnimpl::Load_word(); + 0x2: decode HTOPCODE_8 { + 0x0: decode HTRN { + 0xf: WarnUnimpl::ldr(); // literal A8-122 + default: decode HTOPCODE_7 { + 0x0: decode LTOPCODE_11_8 { + 0x0: decode LTOPCODE_7_6 { + 0x0: WarnUnimpl::ldr(); // register A8-122 + } + 0x9, 0xb, 0xc, 0xd, 0xf: + WarnUnimpl::ldr(); // immediate thumb A8-118 + 0xe: WarnUnimpl::ldrt(); // A8-176 + } + 0x1: WarnUnimpl::ldr(); // immediate thumb A8-118 + } + } + } 0x3: WarnUnimpl::undefined(); } } |