aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamas Berghammer <tberghammer@google.com>2015-05-28 10:38:32 +0000
committerTamas Berghammer <tberghammer@google.com>2015-05-28 10:38:32 +0000
commit64d807e95d8d9969132f67f70e5ffb1acf9aedf9 (patch)
tree7ffa347e95d018978ca1c0d6e1fc6ff3769fe04b
parent64c701b3f7265fe731e095a18792587ee87e5908 (diff)
downloadllvm-64d807e95d8d9969132f67f70e5ffb1acf9aedf9.zip
llvm-64d807e95d8d9969132f67f70e5ffb1acf9aedf9.tar.gz
llvm-64d807e95d8d9969132f67f70e5ffb1acf9aedf9.tar.bz2
Fix write register context in EmulateInstructionARM::EmulateADDRdSPImm
llvm-svn: 238410
-rw-r--r--lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp b/lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
index 9634664..d4dfe59 100644
--- a/lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
+++ b/lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
@@ -660,9 +660,12 @@ EmulateInstructionARM::EmulateADDRdSPImm (const uint32_t opcode, const ARMEncodi
}
addr_t sp_offset = imm32;
addr_t addr = sp + sp_offset; // a pointer to the stack area
-
+
EmulateInstruction::Context context;
- context.type = eContextSetFramePointer;
+ if (Rd == GetFramePointerRegisterNumber())
+ context.type = eContextSetFramePointer;
+ else
+ context.type = EmulateInstruction::eContextRegisterPlusOffset;
RegisterInfo sp_reg;
GetRegisterInfo (eRegisterKindDWARF, dwarf_sp, sp_reg);
context.SetRegisterPlusOffset (sp_reg, sp_offset);