LLDB  mainline
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
RegisterContextPOSIX_powerpc Class Referenceabstract

#include <RegisterContextPOSIX_powerpc.h>

Inheritance diagram for RegisterContextPOSIX_powerpc:
Inheritance graph
[legend]
Collaboration diagram for RegisterContextPOSIX_powerpc:
Collaboration graph
[legend]

Public Member Functions

 RegisterContextPOSIX_powerpc (lldb_private::Thread &thread, uint32_t concrete_frame_idx, lldb_private::RegisterInfoInterface *register_info)
 
 ~RegisterContextPOSIX_powerpc () override
 
void Invalidate ()
 
void InvalidateAllRegisters () override
 
size_t GetRegisterCount () override
 
virtual size_t GetGPRSize ()
 
virtual unsigned GetRegisterSize (unsigned reg)
 
virtual unsigned GetRegisterOffset (unsigned reg)
 
const lldb_private::RegisterInfo * GetRegisterInfoAtIndex (size_t reg) override
 
size_t GetRegisterSetCount () override
 
const lldb_private::RegisterSet * GetRegisterSet (size_t set) override
 
const char * GetRegisterName (unsigned reg)
 
uint32_t ConvertRegisterKindToRegisterNumber (lldb::RegisterKind kind, uint32_t num) override
 Convert from a given register numbering scheme to the lldb register numbering scheme. More...
 
- Public Member Functions inherited from lldb_private::RegisterContext
 RegisterContext (Thread &thread, uint32_t concrete_frame_idx)
 
 ~RegisterContext () override
 
void InvalidateIfNeeded (bool force)
 
uint32_t UpdateDynamicRegisterSize (const lldb_private::ArchSpec &arch, RegisterInfo *reg_info)
 
virtual bool ReadRegister (const RegisterInfo *reg_info, RegisterValue &reg_value)=0
 
virtual bool WriteRegister (const RegisterInfo *reg_info, const RegisterValue &reg_value)=0
 
virtual bool ReadAllRegisterValues (lldb::DataBufferSP &data_sp)
 
virtual bool WriteAllRegisterValues (const lldb::DataBufferSP &data_sp)
 
virtual bool ReadAllRegisterValues (lldb_private::RegisterCheckpoint &reg_checkpoint)
 
virtual bool WriteAllRegisterValues (const lldb_private::RegisterCheckpoint &reg_checkpoint)
 
bool CopyFromRegisterContext (lldb::RegisterContextSP context)
 
virtual uint32_t NumSupportedHardwareBreakpoints ()
 
virtual uint32_t SetHardwareBreakpoint (lldb::addr_t addr, size_t size)
 
virtual bool ClearHardwareBreakpoint (uint32_t hw_idx)
 
virtual uint32_t NumSupportedHardwareWatchpoints ()
 
virtual uint32_t SetHardwareWatchpoint (lldb::addr_t addr, size_t size, bool read, bool write)
 
virtual bool ClearHardwareWatchpoint (uint32_t hw_index)
 
virtual bool HardwareSingleStep (bool enable)
 
virtual Status ReadRegisterValueFromMemory (const lldb_private::RegisterInfo *reg_info, lldb::addr_t src_addr, uint32_t src_len, RegisterValue &reg_value)
 
virtual Status WriteRegisterValueToMemory (const lldb_private::RegisterInfo *reg_info, lldb::addr_t dst_addr, uint32_t dst_len, const RegisterValue &reg_value)
 
virtual lldb::tid_t GetThreadID () const
 
virtual ThreadGetThread ()
 
const RegisterInfo * GetRegisterInfoByName (llvm::StringRef reg_name, uint32_t start_idx=0)
 
const RegisterInfo * GetRegisterInfo (lldb::RegisterKind reg_kind, uint32_t reg_num)
 
uint64_t GetPC (uint64_t fail_value=LLDB_INVALID_ADDRESS)
 
bool SetPC (uint64_t pc)
 
bool SetPC (Address addr)
 
uint64_t GetSP (uint64_t fail_value=LLDB_INVALID_ADDRESS)
 
bool SetSP (uint64_t sp)
 
uint64_t GetFP (uint64_t fail_value=LLDB_INVALID_ADDRESS)
 
bool SetFP (uint64_t fp)
 
const char * GetRegisterName (uint32_t reg)
 
uint64_t GetReturnAddress (uint64_t fail_value=LLDB_INVALID_ADDRESS)
 
uint64_t GetFlags (uint64_t fail_value=0)
 
uint64_t ReadRegisterAsUnsigned (uint32_t reg, uint64_t fail_value)
 
uint64_t ReadRegisterAsUnsigned (const RegisterInfo *reg_info, uint64_t fail_value)
 
bool WriteRegisterFromUnsigned (uint32_t reg, uint64_t uval)
 
bool WriteRegisterFromUnsigned (const RegisterInfo *reg_info, uint64_t uval)
 
bool ConvertBetweenRegisterKinds (lldb::RegisterKind source_rk, uint32_t source_regnum, lldb::RegisterKind target_rk, uint32_t &target_regnum)
 
lldb::TargetSP CalculateTarget () override
 
lldb::ProcessSP CalculateProcess () override
 
lldb::ThreadSP CalculateThread () override
 
lldb::StackFrameSP CalculateStackFrame () override
 
void CalculateExecutionContext (ExecutionContext &exe_ctx) override
 Reconstruct the object's execution context into sc. More...
 
uint32_t GetStopID () const
 
void SetStopID (uint32_t stop_id)
 
- Public Member Functions inherited from lldb_private::ExecutionContextScope
virtual ~ExecutionContextScope ()
 

Protected Member Functions

virtual bool IsRegisterSetAvailable (size_t set_index)
 
virtual const lldb_private::RegisterInfo * GetRegisterInfo ()
 
bool IsGPR (unsigned reg)
 
bool IsFPR (unsigned reg)
 
bool IsVMX (unsigned reg)
 
lldb::ByteOrder GetByteOrder ()
 
virtual bool ReadGPR ()=0
 
virtual bool ReadFPR ()=0
 
virtual bool ReadVMX ()=0
 
virtual bool WriteGPR ()=0
 
virtual bool WriteFPR ()=0
 
virtual bool WriteVMX ()=0
 

Protected Attributes

uint64_t m_gpr_powerpc [k_num_gpr_registers_powerpc]
 
uint64_t m_fpr_powerpc [k_num_fpr_registers_powerpc]
 
uint32_t m_vmx_powerpc [k_num_vmx_registers_powerpc][4]
 
std::unique_ptr< lldb_private::RegisterInfoInterfacem_register_info_up
 
- Protected Attributes inherited from lldb_private::RegisterContext
Threadm_thread
 
uint32_t m_concrete_frame_idx
 
uint32_t m_stop_id
 

Detailed Description

Definition at line 140 of file RegisterContextPOSIX_powerpc.h.

Constructor & Destructor Documentation

◆ RegisterContextPOSIX_powerpc()

RegisterContextPOSIX_powerpc::RegisterContextPOSIX_powerpc ( lldb_private::Thread thread,
uint32_t  concrete_frame_idx,
lldb_private::RegisterInfoInterface register_info 
)

Definition at line 92 of file RegisterContextPOSIX_powerpc.cpp.

References m_register_info_up.

◆ ~RegisterContextPOSIX_powerpc()

RegisterContextPOSIX_powerpc::~RegisterContextPOSIX_powerpc ( )
override

Definition at line 99 of file RegisterContextPOSIX_powerpc.cpp.

Member Function Documentation

◆ ConvertRegisterKindToRegisterNumber()

uint32_t RegisterContextPOSIX_powerpc::ConvertRegisterKindToRegisterNumber ( lldb::RegisterKind  kind,
uint32_t  num 
)
overridevirtual

Convert from a given register numbering scheme to the lldb register numbering scheme.

There may be multiple ways to enumerate the registers for a given architecture. ABI references will specify one to be used with DWARF, the register numberings from process plugin, there may be a variation used for eh_frame unwind instructions (e.g. on Darwin), and so on. Register 5 by itself is meaningless - RegisterKind enumeration tells you what context that number should be translated as.

Inside lldb, register numbers are in the eRegisterKindLLDB scheme; arguments which take a register number should take one in that scheme.

eRegisterKindGeneric is a special numbering scheme which gives us constant values for the pc, frame register, stack register, etc., for use within lldb. They may not be defined for all architectures but it allows generic code to translate these common registers into the lldb numbering scheme.

This method translates a given register kind + register number into the eRegisterKindLLDB register numbering.

Parameters
[in]kindThe register numbering scheme (RegisterKind) that the following register number is in.
[in]numA register number in the 'kind' register numbering scheme.
Returns
The equivalent register number in the eRegisterKindLLDB numbering scheme, if possible, else LLDB_INVALID_REGNUM.

Implements lldb_private::RegisterContext.

Definition at line 180 of file RegisterContextPOSIX_powerpc.cpp.

References GetRegisterCount(), GetRegisterInfoAtIndex(), lldb::kNumRegisterKinds, and LLDB_INVALID_REGNUM.

◆ GetByteOrder()

lldb::ByteOrder RegisterContextPOSIX_powerpc::GetByteOrder ( )
protected

◆ GetGPRSize()

size_t RegisterContextPOSIX_powerpc::GetGPRSize ( )
virtual

◆ GetRegisterCount()

size_t RegisterContextPOSIX_powerpc::GetRegisterCount ( )
overridevirtual

◆ GetRegisterInfo()

const RegisterInfo * RegisterContextPOSIX_powerpc::GetRegisterInfo ( )
protectedvirtual

◆ GetRegisterInfoAtIndex()

const RegisterInfo * RegisterContextPOSIX_powerpc::GetRegisterInfoAtIndex ( size_t  reg)
overridevirtual

◆ GetRegisterName()

const char * RegisterContextPOSIX_powerpc::GetRegisterName ( unsigned  reg)

◆ GetRegisterOffset()

unsigned RegisterContextPOSIX_powerpc::GetRegisterOffset ( unsigned  reg)
virtual

◆ GetRegisterSet()

const RegisterSet * RegisterContextPOSIX_powerpc::GetRegisterSet ( size_t  set)
overridevirtual

◆ GetRegisterSetCount()

size_t RegisterContextPOSIX_powerpc::GetRegisterSetCount ( )
overridevirtual

◆ GetRegisterSize()

unsigned RegisterContextPOSIX_powerpc::GetRegisterSize ( unsigned  reg)
virtual

◆ Invalidate()

void RegisterContextPOSIX_powerpc::Invalidate ( )

Definition at line 101 of file RegisterContextPOSIX_powerpc.cpp.

◆ InvalidateAllRegisters()

void RegisterContextPOSIX_powerpc::InvalidateAllRegisters ( )
overridevirtual

Implements lldb_private::RegisterContext.

Definition at line 103 of file RegisterContextPOSIX_powerpc.cpp.

◆ IsFPR()

bool RegisterContextPOSIX_powerpc::IsFPR ( unsigned  reg)
protected

◆ IsGPR()

bool RegisterContextPOSIX_powerpc::IsGPR ( unsigned  reg)
protected

◆ IsRegisterSetAvailable()

bool RegisterContextPOSIX_powerpc::IsRegisterSetAvailable ( size_t  set_index)
protectedvirtual

Definition at line 172 of file RegisterContextPOSIX_powerpc.cpp.

References k_num_register_sets.

Referenced by GetRegisterSet(), and GetRegisterSetCount().

◆ IsVMX()

bool RegisterContextPOSIX_powerpc::IsVMX ( unsigned  reg)
protected

◆ ReadFPR()

virtual bool RegisterContextPOSIX_powerpc::ReadFPR ( )
protectedpure virtual

◆ ReadGPR()

virtual bool RegisterContextPOSIX_powerpc::ReadGPR ( )
protectedpure virtual

◆ ReadVMX()

virtual bool RegisterContextPOSIX_powerpc::ReadVMX ( )
protectedpure virtual

◆ WriteFPR()

virtual bool RegisterContextPOSIX_powerpc::WriteFPR ( )
protectedpure virtual

◆ WriteGPR()

virtual bool RegisterContextPOSIX_powerpc::WriteGPR ( )
protectedpure virtual

◆ WriteVMX()

virtual bool RegisterContextPOSIX_powerpc::WriteVMX ( )
protectedpure virtual

Member Data Documentation

◆ m_fpr_powerpc

uint64_t RegisterContextPOSIX_powerpc::m_fpr_powerpc[k_num_fpr_registers_powerpc]
protected

◆ m_gpr_powerpc

uint64_t RegisterContextPOSIX_powerpc::m_gpr_powerpc[k_num_gpr_registers_powerpc]
protected

◆ m_register_info_up

std::unique_ptr<lldb_private::RegisterInfoInterface> RegisterContextPOSIX_powerpc::m_register_info_up
protected

◆ m_vmx_powerpc

uint32_t RegisterContextPOSIX_powerpc::m_vmx_powerpc[k_num_vmx_registers_powerpc][4]
protected

Definition at line 176 of file RegisterContextPOSIX_powerpc.h.


The documentation for this class was generated from the following files: