12#if defined(__powerpc64__)
14#ifndef lldb_NativeRegisterContextLinux_ppc64le_h
15#define lldb_NativeRegisterContextLinux_ppc64le_h
20#define DECLARE_REGISTER_INFOS_PPC64LE_STRUCT
22#undef DECLARE_REGISTER_INFOS_PPC64LE_STRUCT
25namespace process_linux {
27class NativeProcessLinux;
29class NativeRegisterContextLinux_ppc64le :
public NativeRegisterContextLinux {
31 NativeRegisterContextLinux_ppc64le(
const ArchSpec &target_arch,
32 NativeThreadProtocol &native_thread);
34 uint32_t GetRegisterSetCount()
const override;
36 uint32_t GetUserRegisterCount()
const override;
38 const RegisterSet *GetRegisterSet(uint32_t set_index)
const override;
40 Status ReadRegister(
const RegisterInfo *reg_info,
41 RegisterValue ®_value)
override;
43 Status WriteRegister(
const RegisterInfo *reg_info,
44 const RegisterValue ®_value)
override;
52 uint32_t NumSupportedHardwareWatchpoints()
override;
54 uint32_t SetHardwareWatchpoint(
lldb::addr_t addr,
size_t size,
55 uint32_t watch_flags)
override;
57 bool ClearHardwareWatchpoint(uint32_t hw_index)
override;
59 Status GetWatchpointHitIndex(uint32_t &wp_index,
62 lldb::addr_t GetWatchpointHitAddress(uint32_t wp_index)
override;
64 lldb::addr_t GetWatchpointAddress(uint32_t wp_index)
override;
66 uint32_t GetWatchpointSize(uint32_t wp_index);
68 bool WatchpointIsEnabled(uint32_t wp_index);
71 bool IsVMX(
unsigned reg);
73 bool IsVSX(
unsigned reg);
83 void *GetGPRBuffer()
override {
return &m_gpr_ppc64le; }
85 void *GetFPRBuffer()
override {
return &m_fpr_ppc64le; }
87 size_t GetFPRSize()
override {
return sizeof(m_fpr_ppc64le); }
95 bool IsGPR(
unsigned reg)
const;
97 bool IsFPR(
unsigned reg)
const;
99 bool IsVMX(
unsigned reg)
const;
101 bool IsVSX(
unsigned reg)
const;
103 uint32_t CalculateFprOffset(
const RegisterInfo *reg_info)
const;
105 uint32_t CalculateVmxOffset(
const RegisterInfo *reg_info)
const;
107 uint32_t CalculateVsxOffset(
const RegisterInfo *reg_info)
const;
109 Status ReadHardwareDebugInfo();
111 Status WriteHardwareDebugRegs();
125 std::array<DREG, 16> m_hwp_regs;
128 uint32_t m_max_hwp_supported = 16;
129 uint32_t m_max_hbp_supported = 16;
130 bool m_refresh_hwdebug_info =
true;
A class that represents a running process on the host machine.
std::shared_ptr< lldb_private::DataBuffer > DataBufferSP
std::shared_ptr< lldb_private::WritableDataBuffer > WritableDataBufferSP