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;
46 Status ReadAllRegisterValues(lldb::WritableDataBufferSP &data_sp)
override;
48 Status WriteAllRegisterValues(
const lldb::DataBufferSP &data_sp)
override;
52 uint32_t NumSupportedHardwareWatchpoints()
override;
57 bool ClearHardwareWatchpoint(
uint32_t hw_index)
override;
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;
130 bool m_refresh_hwdebug_info =
true;
A class that represents a running process on the host machine.