//===-- lldb_EmulationStateARM.h --------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef lldb_EmulationStateARM_h_ #define lldb_EmulationStateARM_h_ #include #include "lldb/Core/EmulateInstruction.h" #include "lldb/Core/Opcode.h" class EmulationStateARM { public: EmulationStateARM(); virtual ~EmulationStateARM(); bool StorePseudoRegisterValue(uint32_t reg_num, uint64_t value); uint64_t ReadPseudoRegisterValue(uint32_t reg_num, bool &success); bool StoreToPseudoAddress(lldb::addr_t p_address, uint32_t value); uint32_t ReadFromPseudoAddress(lldb::addr_t p_address, bool &success); void ClearPseudoRegisters(); void ClearPseudoMemory(); bool LoadPseudoRegistersFromFrame(lldb_private::StackFrame &frame); bool LoadStateFromDictionary(lldb_private::OptionValueDictionary *test_data); bool CompareState(EmulationStateARM &other_state); static size_t ReadPseudoMemory(lldb_private::EmulateInstruction *instruction, void *baton, const lldb_private::EmulateInstruction::Context &context, lldb::addr_t addr, void *dst, size_t length); static size_t WritePseudoMemory(lldb_private::EmulateInstruction *instruction, void *baton, const lldb_private::EmulateInstruction::Context &context, lldb::addr_t addr, const void *dst, size_t length); static bool ReadPseudoRegister(lldb_private::EmulateInstruction *instruction, void *baton, const lldb_private::RegisterInfo *reg_info, lldb_private::RegisterValue ®_value); static bool WritePseudoRegister(lldb_private::EmulateInstruction *instruction, void *baton, const lldb_private::EmulateInstruction::Context &context, const lldb_private::RegisterInfo *reg_info, const lldb_private::RegisterValue ®_value); private: uint32_t m_gpr[17]; struct _sd_regs { uint32_t s_regs[32]; // sregs 0 - 31 & dregs 0 - 15 uint64_t d_regs[16]; // dregs 16-31 } m_vfp_regs; std::map m_memory; // Eventually will want to change // uint32_t to a data buffer heap // type. DISALLOW_COPY_AND_ASSIGN(EmulationStateARM); }; #endif // lldb_EmulationStateARM_h_