LLDB mainline
|
#include <RegisterInfoPOSIX_arm64.h>
Classes | |
struct | DBG |
struct | EXC |
struct | FPU |
struct | GPR |
struct | VReg |
Public Types | |
enum | { GPRegSet = 0 , FPRegSet } |
enum | { eRegsetMaskDefault = 0 , eRegsetMaskSVE = 1 , eRegsetMaskSSVE = 2 , eRegsetMaskPAuth = 4 , eRegsetMaskMTE = 8 , eRegsetMaskTLS = 16 , eRegsetMaskZA = 32 , eRegsetMaskZT = 64 , eRegsetMaskFPMR = 128 , eRegsetMaskDynamic = ~1 } |
enum | { eVectorQuadwordAArch64 , eVectorQuadwordAArch64SVE , eVectorQuadwordAArch64SVEMax = 256 } |
Public Member Functions | |
RegisterInfoPOSIX_arm64 (const lldb_private::ArchSpec &target_arch, lldb_private::Flags opt_regsets) | |
size_t | GetGPRSize () const override |
size_t | GetFPRSize () const override |
const lldb_private::RegisterInfo * | GetRegisterInfo () const override |
uint32_t | GetRegisterCount () const override |
const lldb_private::RegisterSet * | GetRegisterSet (size_t reg_set) const override |
size_t | GetRegisterSetCount () const override |
size_t | GetRegisterSetFromRegisterIndex (uint32_t reg_index) const override |
void | AddRegSetPAuth () |
void | AddRegSetMTE () |
void | AddRegSetTLS (bool has_tpidr2) |
void | AddRegSetSME (bool has_zt) |
void | AddRegSetFPMR () |
uint32_t | ConfigureVectorLengthSVE (uint32_t sve_vq) |
void | ConfigureVectorLengthZA (uint32_t za_vq) |
bool | VectorSizeIsValid (uint32_t vq) |
bool | IsSVEPresent () const |
bool | IsSSVEPresent () const |
bool | IsZAPresent () const |
bool | IsZTPresent () const |
bool | IsPAuthPresent () const |
bool | IsMTEPresent () const |
bool | IsTLSPresent () const |
bool | IsFPMRPresent () const |
bool | IsSVEReg (unsigned reg) const |
bool | IsSVEZReg (unsigned reg) const |
bool | IsSVEPReg (unsigned reg) const |
bool | IsSVERegVG (unsigned reg) const |
bool | IsPAuthReg (unsigned reg) const |
bool | IsMTEReg (unsigned reg) const |
bool | IsTLSReg (unsigned reg) const |
bool | IsSMEReg (unsigned reg) const |
bool | IsSMERegZA (unsigned reg) const |
bool | IsSMERegZT (unsigned reg) const |
bool | IsFPMRReg (unsigned reg) const |
uint32_t | GetRegNumSVEZ0 () const |
uint32_t | GetRegNumSVEFFR () const |
uint32_t | GetRegNumFPCR () const |
uint32_t | GetRegNumFPSR () const |
uint32_t | GetRegNumSVEVG () const |
uint32_t | GetRegNumSMESVG () const |
uint32_t | GetPAuthOffset () const |
uint32_t | GetMTEOffset () const |
uint32_t | GetTLSOffset () const |
uint32_t | GetSMEOffset () const |
uint32_t | GetFPMROffset () const |
Public Member Functions inherited from lldb_private::RegisterInfoAndSetInterface | |
RegisterInfoAndSetInterface (const lldb_private::ArchSpec &target_arch) | |
virtual size_t | GetFPRSize () const =0 |
virtual const lldb_private::RegisterSet * | GetRegisterSet (size_t reg_set) const =0 |
virtual size_t | GetRegisterSetCount () const =0 |
virtual size_t | GetRegisterSetFromRegisterIndex (uint32_t reg_index) const =0 |
Public Member Functions inherited from lldb_private::RegisterInfoInterface | |
RegisterInfoInterface (const lldb_private::ArchSpec &target_arch) | |
virtual | ~RegisterInfoInterface ()=default |
virtual size_t | GetGPRSize () const =0 |
virtual const lldb_private::RegisterInfo * | GetRegisterInfo () const =0 |
virtual uint32_t | GetRegisterCount () const =0 |
virtual uint32_t | GetUserRegisterCount () const |
const lldb_private::ArchSpec & | GetTargetArchitecture () const |
Static Public Member Functions | |
static size_t | GetGPRSizeStatic () |
Private Types | |
typedef std::map< uint32_t, std::vector< lldb_private::RegisterInfo > > | per_vq_register_infos |
Private Attributes | |
per_vq_register_infos | m_per_vq_reg_infos |
uint32_t | m_vector_reg_vq = eVectorQuadwordAArch64 |
uint32_t | m_za_reg_vq = eVectorQuadwordAArch64 |
const lldb_private::RegisterInfo * | m_register_info_p |
uint32_t | m_register_info_count |
const lldb_private::RegisterSet * | m_register_set_p |
uint32_t | m_register_set_count |
std::map< uint32_t, std::pair< uint32_t, uint32_t > > | m_per_regset_regnum_range |
lldb_private::Flags | m_opt_regsets |
std::vector< lldb_private::RegisterInfo > | m_dynamic_reg_infos |
std::vector< lldb_private::RegisterSet > | m_dynamic_reg_sets |
std::vector< uint32_t > | pauth_regnum_collection |
std::vector< uint32_t > | m_mte_regnum_collection |
std::vector< uint32_t > | m_tls_regnum_collection |
std::vector< uint32_t > | m_sme_regnum_collection |
std::vector< uint32_t > | m_fpmr_regnum_collection |
Definition at line 20 of file RegisterInfoPOSIX_arm64.h.
|
private |
Definition at line 162 of file RegisterInfoPOSIX_arm64.h.
anonymous enum |
Enumerator | |
---|---|
GPRegSet | |
FPRegSet |
Definition at line 23 of file RegisterInfoPOSIX_arm64.h.
anonymous enum |
Enumerator | |
---|---|
eRegsetMaskDefault | |
eRegsetMaskSVE | |
eRegsetMaskSSVE | |
eRegsetMaskPAuth | |
eRegsetMaskMTE | |
eRegsetMaskTLS | |
eRegsetMaskZA | |
eRegsetMaskZT | |
eRegsetMaskFPMR | |
eRegsetMaskDynamic |
Definition at line 26 of file RegisterInfoPOSIX_arm64.h.
anonymous enum |
Enumerator | |
---|---|
eVectorQuadwordAArch64 | |
eVectorQuadwordAArch64SVE | |
eVectorQuadwordAArch64SVEMax |
Definition at line 40 of file RegisterInfoPOSIX_arm64.h.
RegisterInfoPOSIX_arm64::RegisterInfoPOSIX_arm64 | ( | const lldb_private::ArchSpec & | target_arch, |
lldb_private::Flags | opt_regsets | ||
) |
Definition at line 224 of file RegisterInfoPOSIX_arm64.cpp.
References AddRegSetFPMR(), AddRegSetMTE(), AddRegSetPAuth(), AddRegSetSME(), AddRegSetTLS(), lldb_private::Flags::AllSet(), lldb_private::Flags::AnySet(), eRegsetMaskDynamic, eRegsetMaskFPMR, eRegsetMaskMTE, eRegsetMaskPAuth, eRegsetMaskSSVE, eRegsetMaskSVE, eRegsetMaskTLS, eRegsetMaskZT, FPRegSet, g_reg_sets_arm64, lldb_private::ArchSpec::GetMachine(), GPRegSet, k_num_register_sets_default, m_dynamic_reg_infos, m_dynamic_reg_sets, m_opt_regsets, m_per_regset_regnum_range, m_register_info_count, m_register_info_p, m_register_set_count, and m_register_set_p.
void RegisterInfoPOSIX_arm64::AddRegSetFPMR | ( | ) |
Definition at line 422 of file RegisterInfoPOSIX_arm64.cpp.
References lldb::eRegisterKindLLDB, g_reg_set_fpmr_arm64, g_register_infos_fpmr, m_dynamic_reg_infos, m_dynamic_reg_sets, m_fpmr_regnum_collection, m_per_regset_regnum_range, and m_register_set_count.
Referenced by RegisterInfoPOSIX_arm64().
void RegisterInfoPOSIX_arm64::AddRegSetMTE | ( | ) |
Definition at line 344 of file RegisterInfoPOSIX_arm64.cpp.
References lldb::eRegisterKindLLDB, g_reg_set_mte_arm64, g_register_infos_mte, m_dynamic_reg_infos, m_dynamic_reg_sets, m_mte_regnum_collection, m_per_regset_regnum_range, and m_register_set_count.
Referenced by RegisterInfoPOSIX_arm64().
void RegisterInfoPOSIX_arm64::AddRegSetPAuth | ( | ) |
Definition at line 326 of file RegisterInfoPOSIX_arm64.cpp.
References lldb::eRegisterKindLLDB, g_reg_set_pauth_arm64, g_register_infos_pauth, k_num_pauth_register, m_dynamic_reg_infos, m_dynamic_reg_sets, m_per_regset_regnum_range, m_register_set_count, and pauth_regnum_collection.
Referenced by RegisterInfoPOSIX_arm64().
void RegisterInfoPOSIX_arm64::AddRegSetSME | ( | bool | has_zt | ) |
Definition at line 379 of file RegisterInfoPOSIX_arm64.cpp.
References lldb::eRegisterKindLLDB, g_reg_set_sme_arm64, g_register_infos_sme, g_register_infos_sme2, GetRegNumSVEVG(), k_num_sme_register, LLDB_INVALID_REGNUM, m_dynamic_reg_infos, m_dynamic_reg_sets, m_per_regset_regnum_range, m_register_set_count, m_sme_regnum_collection, and lldb_private::RegisterSet::num_registers.
Referenced by RegisterInfoPOSIX_arm64().
void RegisterInfoPOSIX_arm64::AddRegSetTLS | ( | bool | has_tpidr2 | ) |
Definition at line 359 of file RegisterInfoPOSIX_arm64.cpp.
References lldb::eRegisterKindLLDB, g_register_infos_tls, m_dynamic_reg_infos, m_dynamic_reg_sets, m_per_regset_regnum_range, m_register_set_count, and m_tls_regnum_collection.
Referenced by RegisterInfoPOSIX_arm64().
uint32_t RegisterInfoPOSIX_arm64::ConfigureVectorLengthSVE | ( | uint32_t | sve_vq | ) |
Definition at line 437 of file RegisterInfoPOSIX_arm64.cpp.
References eVectorQuadwordAArch64, eVectorQuadwordAArch64SVE, fpu_s0, m_per_vq_reg_infos, m_register_info_count, m_register_info_p, m_vector_reg_vq, SVE_QUAD_WORD_BYTES, SVE_REGS_DEFAULT_OFFSET_LINUX, and VectorSizeIsValid().
void RegisterInfoPOSIX_arm64::ConfigureVectorLengthZA | ( | uint32_t | za_vq | ) |
Definition at line 501 of file RegisterInfoPOSIX_arm64.cpp.
References lldb_private::RegisterInfo::byte_size, m_register_info_p, m_sme_regnum_collection, m_za_reg_vq, and VectorSizeIsValid().
uint32_t RegisterInfoPOSIX_arm64::GetFPMROffset | ( | ) | const |
Definition at line 594 of file RegisterInfoPOSIX_arm64.cpp.
References lldb_private::RegisterInfo::byte_offset, m_fpmr_regnum_collection, and m_register_info_p.
|
overridevirtual |
Implements lldb_private::RegisterInfoAndSetInterface.
Definition at line 296 of file RegisterInfoPOSIX_arm64.cpp.
|
inlineoverridevirtual |
Implements lldb_private::RegisterInfoInterface.
Definition at line 91 of file RegisterInfoPOSIX_arm64.h.
References GetGPRSizeStatic().
|
static |
Definition at line 292 of file RegisterInfoPOSIX_arm64.cpp.
Referenced by GetGPRSize().
uint32_t RegisterInfoPOSIX_arm64::GetMTEOffset | ( | ) | const |
Definition at line 582 of file RegisterInfoPOSIX_arm64.cpp.
References lldb_private::RegisterInfo::byte_offset, m_mte_regnum_collection, and m_register_info_p.
uint32_t RegisterInfoPOSIX_arm64::GetPAuthOffset | ( | ) | const |
Definition at line 578 of file RegisterInfoPOSIX_arm64.cpp.
References lldb_private::RegisterInfo::byte_offset, m_register_info_p, and pauth_regnum_collection.
|
overridevirtual |
Implements lldb_private::RegisterInfoInterface.
Definition at line 288 of file RegisterInfoPOSIX_arm64.cpp.
References m_register_info_count.
|
overridevirtual |
Implements lldb_private::RegisterInfoInterface.
Definition at line 301 of file RegisterInfoPOSIX_arm64.cpp.
References m_register_info_p.
|
overridevirtual |
Implements lldb_private::RegisterInfoAndSetInterface.
Definition at line 320 of file RegisterInfoPOSIX_arm64.cpp.
References GetRegisterSetCount(), and m_register_set_p.
|
overridevirtual |
Implements lldb_private::RegisterInfoAndSetInterface.
Definition at line 305 of file RegisterInfoPOSIX_arm64.cpp.
References m_register_set_count.
Referenced by GetRegisterSet().
|
overridevirtual |
Implements lldb_private::RegisterInfoAndSetInterface.
Definition at line 309 of file RegisterInfoPOSIX_arm64.cpp.
References LLDB_INVALID_REGNUM, and m_per_regset_regnum_range.
uint32_t RegisterInfoPOSIX_arm64::GetRegNumFPCR | ( | ) | const |
Definition at line 568 of file RegisterInfoPOSIX_arm64.cpp.
uint32_t RegisterInfoPOSIX_arm64::GetRegNumFPSR | ( | ) | const |
Definition at line 570 of file RegisterInfoPOSIX_arm64.cpp.
uint32_t RegisterInfoPOSIX_arm64::GetRegNumSMESVG | ( | ) | const |
Definition at line 574 of file RegisterInfoPOSIX_arm64.cpp.
References m_sme_regnum_collection.
uint32_t RegisterInfoPOSIX_arm64::GetRegNumSVEFFR | ( | ) | const |
Definition at line 566 of file RegisterInfoPOSIX_arm64.cpp.
uint32_t RegisterInfoPOSIX_arm64::GetRegNumSVEVG | ( | ) | const |
Definition at line 572 of file RegisterInfoPOSIX_arm64.cpp.
Referenced by AddRegSetSME().
uint32_t RegisterInfoPOSIX_arm64::GetRegNumSVEZ0 | ( | ) | const |
Definition at line 564 of file RegisterInfoPOSIX_arm64.cpp.
uint32_t RegisterInfoPOSIX_arm64::GetSMEOffset | ( | ) | const |
Definition at line 590 of file RegisterInfoPOSIX_arm64.cpp.
References lldb_private::RegisterInfo::byte_offset, m_register_info_p, and m_sme_regnum_collection.
uint32_t RegisterInfoPOSIX_arm64::GetTLSOffset | ( | ) | const |
Definition at line 586 of file RegisterInfoPOSIX_arm64.cpp.
References lldb_private::RegisterInfo::byte_offset, m_register_info_p, and m_tls_regnum_collection.
|
inline |
Definition at line 134 of file RegisterInfoPOSIX_arm64.h.
References lldb_private::Flags::AnySet(), eRegsetMaskFPMR, and m_opt_regsets.
bool RegisterInfoPOSIX_arm64::IsFPMRReg | ( | unsigned | reg | ) | const |
Definition at line 560 of file RegisterInfoPOSIX_arm64.cpp.
References m_fpmr_regnum_collection.
|
inline |
Definition at line 132 of file RegisterInfoPOSIX_arm64.h.
References lldb_private::Flags::AnySet(), eRegsetMaskMTE, and m_opt_regsets.
bool RegisterInfoPOSIX_arm64::IsMTEReg | ( | unsigned | reg | ) | const |
Definition at line 548 of file RegisterInfoPOSIX_arm64.cpp.
References m_mte_regnum_collection.
|
inline |
Definition at line 131 of file RegisterInfoPOSIX_arm64.h.
References lldb_private::Flags::AnySet(), eRegsetMaskPAuth, and m_opt_regsets.
bool RegisterInfoPOSIX_arm64::IsPAuthReg | ( | unsigned | reg | ) | const |
Definition at line 544 of file RegisterInfoPOSIX_arm64.cpp.
References pauth_regnum_collection.
bool RegisterInfoPOSIX_arm64::IsSMEReg | ( | unsigned | reg | ) | const |
Definition at line 556 of file RegisterInfoPOSIX_arm64.cpp.
References m_sme_regnum_collection.
bool RegisterInfoPOSIX_arm64::IsSMERegZA | ( | unsigned | reg | ) | const |
Definition at line 534 of file RegisterInfoPOSIX_arm64.cpp.
References m_sme_regnum_collection.
bool RegisterInfoPOSIX_arm64::IsSMERegZT | ( | unsigned | reg | ) | const |
Definition at line 538 of file RegisterInfoPOSIX_arm64.cpp.
References m_sme_regnum_collection.
|
inline |
Definition at line 128 of file RegisterInfoPOSIX_arm64.h.
References lldb_private::Flags::AnySet(), eRegsetMaskSSVE, and m_opt_regsets.
bool RegisterInfoPOSIX_arm64::IsSVEPReg | ( | unsigned | reg | ) | const |
Definition at line 526 of file RegisterInfoPOSIX_arm64.cpp.
|
inline |
Definition at line 127 of file RegisterInfoPOSIX_arm64.h.
References lldb_private::Flags::AnySet(), eRegsetMaskSVE, and m_opt_regsets.
bool RegisterInfoPOSIX_arm64::IsSVEReg | ( | unsigned | reg | ) | const |
Definition at line 515 of file RegisterInfoPOSIX_arm64.cpp.
References eVectorQuadwordAArch64, and m_vector_reg_vq.
bool RegisterInfoPOSIX_arm64::IsSVERegVG | ( | unsigned | reg | ) | const |
Definition at line 530 of file RegisterInfoPOSIX_arm64.cpp.
bool RegisterInfoPOSIX_arm64::IsSVEZReg | ( | unsigned | reg | ) | const |
Definition at line 522 of file RegisterInfoPOSIX_arm64.cpp.
|
inline |
Definition at line 133 of file RegisterInfoPOSIX_arm64.h.
References lldb_private::Flags::AnySet(), eRegsetMaskTLS, and m_opt_regsets.
bool RegisterInfoPOSIX_arm64::IsTLSReg | ( | unsigned | reg | ) | const |
Definition at line 552 of file RegisterInfoPOSIX_arm64.cpp.
References m_tls_regnum_collection.
|
inline |
Definition at line 129 of file RegisterInfoPOSIX_arm64.h.
References lldb_private::Flags::AnySet(), eRegsetMaskZA, and m_opt_regsets.
|
inline |
Definition at line 130 of file RegisterInfoPOSIX_arm64.h.
References lldb_private::Flags::AnySet(), eRegsetMaskZT, and m_opt_regsets.
|
inline |
Definition at line 120 of file RegisterInfoPOSIX_arm64.h.
References eVectorQuadwordAArch64, and eVectorQuadwordAArch64SVEMax.
Referenced by ConfigureVectorLengthSVE(), and ConfigureVectorLengthZA().
|
private |
Definition at line 183 of file RegisterInfoPOSIX_arm64.h.
Referenced by AddRegSetFPMR(), AddRegSetMTE(), AddRegSetPAuth(), AddRegSetSME(), AddRegSetTLS(), and RegisterInfoPOSIX_arm64().
|
private |
Definition at line 184 of file RegisterInfoPOSIX_arm64.h.
Referenced by AddRegSetFPMR(), AddRegSetMTE(), AddRegSetPAuth(), AddRegSetSME(), AddRegSetTLS(), and RegisterInfoPOSIX_arm64().
|
private |
Definition at line 190 of file RegisterInfoPOSIX_arm64.h.
Referenced by AddRegSetFPMR(), GetFPMROffset(), and IsFPMRReg().
|
private |
Definition at line 187 of file RegisterInfoPOSIX_arm64.h.
Referenced by AddRegSetMTE(), GetMTEOffset(), and IsMTEReg().
|
private |
Definition at line 181 of file RegisterInfoPOSIX_arm64.h.
Referenced by IsFPMRPresent(), IsMTEPresent(), IsPAuthPresent(), IsSSVEPresent(), IsSVEPresent(), IsTLSPresent(), IsZAPresent(), IsZTPresent(), and RegisterInfoPOSIX_arm64().
|
private |
Definition at line 179 of file RegisterInfoPOSIX_arm64.h.
Referenced by AddRegSetFPMR(), AddRegSetMTE(), AddRegSetPAuth(), AddRegSetSME(), AddRegSetTLS(), GetRegisterSetFromRegisterIndex(), and RegisterInfoPOSIX_arm64().
|
private |
Definition at line 164 of file RegisterInfoPOSIX_arm64.h.
Referenced by ConfigureVectorLengthSVE().
|
private |
Definition at line 172 of file RegisterInfoPOSIX_arm64.h.
Referenced by ConfigureVectorLengthSVE(), GetRegisterCount(), and RegisterInfoPOSIX_arm64().
|
private |
Definition at line 171 of file RegisterInfoPOSIX_arm64.h.
Referenced by ConfigureVectorLengthSVE(), ConfigureVectorLengthZA(), GetFPMROffset(), GetMTEOffset(), GetPAuthOffset(), GetRegisterInfo(), GetSMEOffset(), GetTLSOffset(), and RegisterInfoPOSIX_arm64().
|
private |
Definition at line 175 of file RegisterInfoPOSIX_arm64.h.
Referenced by AddRegSetFPMR(), AddRegSetMTE(), AddRegSetPAuth(), AddRegSetSME(), AddRegSetTLS(), GetRegisterSetCount(), and RegisterInfoPOSIX_arm64().
|
private |
Definition at line 174 of file RegisterInfoPOSIX_arm64.h.
Referenced by GetRegisterSet(), and RegisterInfoPOSIX_arm64().
|
private |
Definition at line 189 of file RegisterInfoPOSIX_arm64.h.
Referenced by AddRegSetSME(), ConfigureVectorLengthZA(), GetRegNumSMESVG(), GetSMEOffset(), IsSMEReg(), IsSMERegZA(), and IsSMERegZT().
|
private |
Definition at line 188 of file RegisterInfoPOSIX_arm64.h.
Referenced by AddRegSetTLS(), GetTLSOffset(), and IsTLSReg().
|
private |
Definition at line 166 of file RegisterInfoPOSIX_arm64.h.
Referenced by ConfigureVectorLengthSVE(), and IsSVEReg().
|
private |
Definition at line 167 of file RegisterInfoPOSIX_arm64.h.
Referenced by ConfigureVectorLengthZA().
|
private |
Definition at line 186 of file RegisterInfoPOSIX_arm64.h.
Referenced by AddRegSetPAuth(), GetPAuthOffset(), and IsPAuthReg().