1314564Sdim//===-- RegisterContextHistory.h ----------------------------------------*- C++ 2314564Sdim//-*-===// 3258882Semaste// 4353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5353358Sdim// See https://llvm.org/LICENSE.txt for license information. 6353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7258882Semaste// 8258882Semaste//===----------------------------------------------------------------------===// 9258882Semaste 10258882Semaste#ifndef lldb_RegisterContextHistory_h_ 11258882Semaste#define lldb_RegisterContextHistory_h_ 12258882Semaste 13258882Semaste#include <vector> 14258882Semaste 15314564Sdim#include "lldb/Symbol/SymbolContext.h" 16314564Sdim#include "lldb/Target/RegisterContext.h" 17258882Semaste#include "lldb/lldb-private.h" 18258882Semaste 19258882Semastenamespace lldb_private { 20314564Sdim 21314564Sdimclass RegisterContextHistory : public lldb_private::RegisterContext { 22258882Semastepublic: 23314564Sdim typedef std::shared_ptr<RegisterContextHistory> SharedPtr; 24258882Semaste 25314564Sdim RegisterContextHistory(Thread &thread, uint32_t concrete_frame_idx, 26314564Sdim uint32_t address_byte_size, lldb::addr_t pc_value); 27258882Semaste 28314564Sdim ~RegisterContextHistory() override; 29258882Semaste 30314564Sdim void InvalidateAllRegisters() override; 31258882Semaste 32314564Sdim size_t GetRegisterCount() override; 33258882Semaste 34314564Sdim const lldb_private::RegisterInfo *GetRegisterInfoAtIndex(size_t reg) override; 35258882Semaste 36314564Sdim size_t GetRegisterSetCount() override; 37258882Semaste 38314564Sdim const lldb_private::RegisterSet *GetRegisterSet(size_t reg_set) override; 39258882Semaste 40314564Sdim bool ReadRegister(const lldb_private::RegisterInfo *reg_info, 41314564Sdim lldb_private::RegisterValue &value) override; 42258882Semaste 43314564Sdim bool WriteRegister(const lldb_private::RegisterInfo *reg_info, 44314564Sdim const lldb_private::RegisterValue &value) override; 45258882Semaste 46314564Sdim bool ReadAllRegisterValues(lldb::DataBufferSP &data_sp) override; 47314564Sdim 48314564Sdim bool WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override; 49314564Sdim 50314564Sdim uint32_t ConvertRegisterKindToRegisterNumber(lldb::RegisterKind kind, 51314564Sdim uint32_t num) override; 52314564Sdim 53258882Semasteprivate: 54314564Sdim // For RegisterContextLLDB only 55258882Semaste 56314564Sdim lldb_private::RegisterSet m_reg_set0; // register set 0 (PC only) 57314564Sdim lldb_private::RegisterInfo m_pc_reg_info; 58314564Sdim 59314564Sdim lldb::addr_t m_pc_value; 60314564Sdim 61314564Sdim DISALLOW_COPY_AND_ASSIGN(RegisterContextHistory); 62258882Semaste}; 63258882Semaste} // namespace lldb_private 64258882Semaste 65296417Sdim#endif // lldb_RegisterContextHistory_h_ 66