diff options
author | Sean Callanan <scallanan@apple.com> | 2012-08-06 23:42:52 +0000 |
---|---|---|
committer | Sean Callanan <scallanan@apple.com> | 2012-08-06 23:42:52 +0000 |
commit | 5c97c2f7b0be1fad7b720e7e4131abe2e74a1a23 (patch) | |
tree | 3018279ecee214639b2f3f532b729ea2e7551394 /lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp | |
parent | 612c66314cd2e17d84a2c0f77f2650e27dc7d06a (diff) | |
download | bcm5719-llvm-5c97c2f7b0be1fad7b720e7e4131abe2e74a1a23.tar.gz bcm5719-llvm-5c97c2f7b0be1fad7b720e7e4131abe2e74a1a23.zip |
Improved raw disassembly output for Thumb.
llvm-svn: 161360
Diffstat (limited to 'lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp')
-rw-r--r-- | lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp b/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp index a5284f11c8e..b03b2af391b 100644 --- a/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp +++ b/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp @@ -130,22 +130,23 @@ public: { if (machine == llvm::Triple::thumb || is_altnernate_isa) { - uint32_t thumb_opcode = data.GetU16(&data_offset); + uint16_t thumb_opcode = data.GetU16(&data_offset); if ((thumb_opcode & 0xe000) != 0xe000 || ((thumb_opcode & 0x1800u) == 0)) { m_opcode.SetOpcode16 (thumb_opcode); + m_is_valid = true; } else { - thumb_opcode <<= 16; - thumb_opcode |= data.GetU16(&data_offset); - m_opcode.SetOpcode32 (thumb_opcode); + data_offset -= 2; + m_opcode.SetOpcode16_2 (data.GetU32(&data_offset)); m_is_valid = true; } } else { m_opcode.SetOpcode32 (data.GetU32(&data_offset)); + m_is_valid = true; } } else |