21#include "llvm/Support/Compiler.h"
44 "g_gpr_regnums_i386 has wrong number of register infos");
62 "g_lldb_regnums_i386 has wrong number of register infos");
73 " g_avx_regnums_i386 has wrong number of register infos");
119 "g_gpr_regnums_x86_64 has wrong number of register infos");
144 "g_lldb_regnums_x86_64 has wrong number of register infos");
157 "g_avx_regnums_x86_64 has wrong number of register infos");
191 bool generic_fpr =
IsFPR(reg);
194 return generic_fpr ||
IsAVX(reg);
199 Thread &thread, uint32_t concrete_frame_idx,
227 assert(reg <
GetRegInfo().num_registers &&
"Invalid register number.");
238 assert(reg <
GetRegInfo().num_registers &&
"Invalid register number.");
243 size_t num_registers =
247 return num_registers;
286 case llvm::Triple::x86:
288 case llvm::Triple::x86_64:
291 assert(
false &&
"Unhandled target architecture.");
299 assert(reg <
GetRegInfo().num_registers &&
"Invalid register offset.");
312 m_fpr.xsave.ymmh[reg_no].bytes);
328 m_fpr.xsave.ymmh[reg_no].bytes);
341 return (set_index < num_sets);
const uint32_t g_lldb_regnums_i386[]
static const RegisterSet g_reg_sets_i386[]
static const uint32_t g_gpr_regnums_x86_64[]
static const uint32_t g_lldb_regnums_x86_64[]
const uint32_t g_gpr_regnums_i386[]
static const RegisterSet g_reg_sets_x86_64[]
const uint32_t g_avx_regnums_i386[]
static const uint32_t g_avx_regnums_x86_64[]
@ k_num_extended_register_sets
std::unique_ptr< lldb_private::RegisterInfoInterface > m_register_info_up
size_t GetRegisterSetCount() override
void InvalidateAllRegisters() override
~RegisterContextPOSIX_x86() override
const lldb_private::RegisterInfo * GetRegisterInfoAtIndex(size_t reg) override
bool CopyXSTATEtoYMM(uint32_t reg, lldb::ByteOrder byte_order)
virtual size_t GetFXSAVEOffset()
lldb_private::YMM m_ymm_set
virtual size_t GetGPRSize()
virtual unsigned GetRegisterOffset(unsigned reg)
virtual bool IsRegisterSetAvailable(size_t set_index)
const lldb_private::RegisterSet * GetRegisterSet(size_t set) override
virtual const lldb_private::RegisterInfo * GetRegisterInfo()
RegisterContextPOSIX_x86(lldb_private::Thread &thread, uint32_t concrete_frame_idx, lldb_private::RegisterInfoInterface *register_info)
virtual unsigned GetRegisterSize(unsigned reg)
virtual lldb_private::RegInfo & GetRegInfo()
const char * GetRegisterName(unsigned reg)
size_t GetRegisterCount() override
bool CopyYMMtoXSTATE(uint32_t reg, lldb::ByteOrder byte_order)
RegisterContext(Thread &thread, uint32_t concrete_frame_idx)
RegisterInfo interface to patch RegisterInfo structure for archs.
#define LLDB_INVALID_REGNUM
A class that represents a running process on the host machine.
@ k_num_avx_registers_i386
@ k_num_fpr_registers_i386
@ k_num_gpr_registers_i386
@ k_num_fpr_registers_x86_64
@ k_num_avx_registers_x86_64
@ k_num_gpr_registers_x86_64
RegInfo & GetRegInfoShared(llvm::Triple::ArchType arch_type, bool with_base)
void YMMToXState(const YMMReg &input, void *xmm_bytes, void *ymmh_bytes)
YMMReg XStateToYMM(const void *xmm_bytes, const void *ymmh_bytes)
ByteOrder
Byte ordering definitions.
uint32_t num_gpr_registers
uint32_t num_fpr_registers
uint32_t num_avx_registers
Every register is described in detail including its name, alternate name (optional),...
uint32_t byte_offset
The byte offset in the register context data where this register's value is found.
uint32_t byte_size
Size in bytes of the register.
const char * name
Name of this register, can't be NULL.
Registers are grouped into register sets.