[Lldb-commits] [lldb] r129422 - /lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp

Caroline Tice ctice at apple.com
Tue Apr 12 17:42:12 PDT 2011


Author: ctice
Date: Tue Apr 12 19:42:12 2011
New Revision: 129422

URL: http://llvm.org/viewvc/llvm-project?rev=129422&view=rev
Log:

Fix various minor bugs in the ARM instruction emulation code.


Modified:
    lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp

Modified: lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp?rev=129422&r1=129421&r2=129422&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp (original)
+++ lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp Tue Apr 12 19:42:12 2011
@@ -9757,7 +9757,7 @@
         // if wback then R[n] = offset_addr;
         if (wback)
         {
-            if (WriteRegisterUnsigned (context, eRegisterKindDWARF, dwarf_r0 + n, offset_addr))
+            if (!WriteRegisterUnsigned (context, eRegisterKindDWARF, dwarf_r0 + n, offset_addr))
                 return false;
         }
     }
@@ -13036,7 +13036,7 @@
     overflow = ((int32_t)result == signed_sum ? 0 : 1);
 
     if (carry_in)
-        carry_out = ((int32_t) x >= (int32_t) y) ? 1 : 0;
+        carry_out = ((int32_t) x >= (int32_t) (~y)) ? 1 : 0;
     else
         carry_out = ((int32_t) x > (int32_t) y) ? 1 : 0;
     
@@ -13193,7 +13193,16 @@
     ARMOpcode *opcode_data;
    
     if (m_opcode_mode == eModeThumb)
+    {
+        if (m_opcode.GetType() == Opcode::eType32)
+        {
+            uint16_t upper_bits = Bits32 (m_opcode.GetOpcode32(), 31, 16);
+            uint16_t lower_bits = Bits32 (m_opcode.GetOpcode32(), 15, 0);
+            uint32_t swapped = (lower_bits << 16) | upper_bits;
+            m_opcode.SetOpcode32 (swapped);
+        }
         opcode_data = GetThumbOpcodeForInstruction (m_opcode.GetOpcode32());
+    }
     else if (m_opcode_mode == eModeARM)
         opcode_data = GetARMOpcodeForInstruction (m_opcode.GetOpcode32());
     else    





More information about the lldb-commits mailing list