1 //===-- lldb_EmulationStateARM.h --------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef lldb_EmulationStateARM_h_
11 #define lldb_EmulationStateARM_h_
15 #include "lldb/Core/EmulateInstruction.h"
16 #include "lldb/Core/Opcode.h"
18 class EmulationStateARM {
24 ~EmulationStateARM ();
27 StorePseudoRegisterValue (uint32_t reg_num, uint64_t value);
30 ReadPseudoRegisterValue (uint32_t reg_num, bool &success);
33 StoreToPseudoAddress (lldb::addr_t p_address, uint32_t value);
36 ReadFromPseudoAddress (lldb::addr_t p_address, bool &success);
39 ClearPseudoRegisters ();
45 LoadPseudoRegistersFromFrame (lldb_private::StackFrame &frame);
48 LoadStateFromDictionary (lldb_private::OptionValueDictionary *test_data);
51 CompareState (EmulationStateARM &other_state);
54 ReadPseudoMemory (lldb_private::EmulateInstruction *instruction,
56 const lldb_private::EmulateInstruction::Context &context,
62 WritePseudoMemory (lldb_private::EmulateInstruction *instruction,
64 const lldb_private::EmulateInstruction::Context &context,
70 ReadPseudoRegister (lldb_private::EmulateInstruction *instruction,
72 const lldb_private::RegisterInfo *reg_info,
73 lldb_private::RegisterValue ®_value);
76 WritePseudoRegister (lldb_private::EmulateInstruction *instruction,
78 const lldb_private::EmulateInstruction::Context &context,
79 const lldb_private::RegisterInfo *reg_info,
80 const lldb_private::RegisterValue ®_value);
85 uint32_t s_regs[32]; // sregs 0 - 31 & dregs 0 - 15
87 uint64_t d_regs[16]; // dregs 16-31
91 std::map<lldb::addr_t, uint32_t> m_memory; // Eventually will want to change uint32_t to a data buffer heap type.
93 DISALLOW_COPY_AND_ASSIGN (EmulationStateARM);
96 #endif // lldb_EmulationStateARM_h_