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 , 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) |
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 | 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 |
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 |
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 |
Definition at line 20 of file RegisterInfoPOSIX_arm64.h.
|
private |
Definition at line 156 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 | |
eRegsetMaskDynamic |
Definition at line 26 of file RegisterInfoPOSIX_arm64.h.
anonymous enum |
Enumerator | |
---|---|
eVectorQuadwordAArch64 | |
eVectorQuadwordAArch64SVE | |
eVectorQuadwordAArch64SVEMax |
Definition at line 39 of file RegisterInfoPOSIX_arm64.h.
RegisterInfoPOSIX_arm64::RegisterInfoPOSIX_arm64 | ( | const lldb_private::ArchSpec & | target_arch, |
lldb_private::Flags | opt_regsets | ||
) |
Definition at line 217 of file RegisterInfoPOSIX_arm64.cpp.
References AddRegSetMTE(), AddRegSetPAuth(), AddRegSetSME(), AddRegSetTLS(), lldb_private::Flags::AllSet(), lldb_private::Flags::AnySet(), eRegsetMaskDynamic, eRegsetMaskMTE, eRegsetMaskPAuth, eRegsetMaskSSVE, eRegsetMaskSVE, 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::AddRegSetMTE | ( | ) |
Definition at line 332 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 314 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 367 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 347 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 410 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 474 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().
|
overridevirtual |
Implements lldb_private::RegisterInfoAndSetInterface.
Definition at line 284 of file RegisterInfoPOSIX_arm64.cpp.
|
inlineoverridevirtual |
Implements lldb_private::RegisterInfoInterface.
Definition at line 90 of file RegisterInfoPOSIX_arm64.h.
References GetGPRSizeStatic().
|
static |
Definition at line 280 of file RegisterInfoPOSIX_arm64.cpp.
Referenced by GetGPRSize().
uint32_t RegisterInfoPOSIX_arm64::GetMTEOffset | ( | ) | const |
Definition at line 551 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 547 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 276 of file RegisterInfoPOSIX_arm64.cpp.
References m_register_info_count.
|
overridevirtual |
Implements lldb_private::RegisterInfoInterface.
Definition at line 289 of file RegisterInfoPOSIX_arm64.cpp.
References m_register_info_p.
|
overridevirtual |
Implements lldb_private::RegisterInfoAndSetInterface.
Definition at line 308 of file RegisterInfoPOSIX_arm64.cpp.
References GetRegisterSetCount(), and m_register_set_p.
|
overridevirtual |
Implements lldb_private::RegisterInfoAndSetInterface.
Definition at line 293 of file RegisterInfoPOSIX_arm64.cpp.
References m_register_set_count.
Referenced by GetRegisterSet().
|
overridevirtual |
Implements lldb_private::RegisterInfoAndSetInterface.
Definition at line 297 of file RegisterInfoPOSIX_arm64.cpp.
References LLDB_INVALID_REGNUM, and m_per_regset_regnum_range.
uint32_t RegisterInfoPOSIX_arm64::GetRegNumFPCR | ( | ) | const |
Definition at line 537 of file RegisterInfoPOSIX_arm64.cpp.
uint32_t RegisterInfoPOSIX_arm64::GetRegNumFPSR | ( | ) | const |
Definition at line 539 of file RegisterInfoPOSIX_arm64.cpp.
uint32_t RegisterInfoPOSIX_arm64::GetRegNumSMESVG | ( | ) | const |
Definition at line 543 of file RegisterInfoPOSIX_arm64.cpp.
References m_sme_regnum_collection.
uint32_t RegisterInfoPOSIX_arm64::GetRegNumSVEFFR | ( | ) | const |
Definition at line 535 of file RegisterInfoPOSIX_arm64.cpp.
uint32_t RegisterInfoPOSIX_arm64::GetRegNumSVEVG | ( | ) | const |
Definition at line 541 of file RegisterInfoPOSIX_arm64.cpp.
Referenced by AddRegSetSME().
uint32_t RegisterInfoPOSIX_arm64::GetRegNumSVEZ0 | ( | ) | const |
Definition at line 533 of file RegisterInfoPOSIX_arm64.cpp.
uint32_t RegisterInfoPOSIX_arm64::GetSMEOffset | ( | ) | const |
Definition at line 559 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 555 of file RegisterInfoPOSIX_arm64.cpp.
References lldb_private::RegisterInfo::byte_offset, m_register_info_p, and m_tls_regnum_collection.
|
inline |
Definition at line 129 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 521 of file RegisterInfoPOSIX_arm64.cpp.
References m_mte_regnum_collection.
|
inline |
Definition at line 128 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 517 of file RegisterInfoPOSIX_arm64.cpp.
References pauth_regnum_collection.
bool RegisterInfoPOSIX_arm64::IsSMEReg | ( | unsigned | reg | ) | const |
Definition at line 529 of file RegisterInfoPOSIX_arm64.cpp.
References m_sme_regnum_collection.
bool RegisterInfoPOSIX_arm64::IsSMERegZA | ( | unsigned | reg | ) | const |
Definition at line 507 of file RegisterInfoPOSIX_arm64.cpp.
References m_sme_regnum_collection.
bool RegisterInfoPOSIX_arm64::IsSMERegZT | ( | unsigned | reg | ) | const |
Definition at line 511 of file RegisterInfoPOSIX_arm64.cpp.
References m_sme_regnum_collection.
|
inline |
Definition at line 125 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 499 of file RegisterInfoPOSIX_arm64.cpp.
|
inline |
Definition at line 124 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 488 of file RegisterInfoPOSIX_arm64.cpp.
References eVectorQuadwordAArch64, and m_vector_reg_vq.
bool RegisterInfoPOSIX_arm64::IsSVERegVG | ( | unsigned | reg | ) | const |
Definition at line 503 of file RegisterInfoPOSIX_arm64.cpp.
bool RegisterInfoPOSIX_arm64::IsSVEZReg | ( | unsigned | reg | ) | const |
Definition at line 495 of file RegisterInfoPOSIX_arm64.cpp.
|
inline |
Definition at line 130 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 525 of file RegisterInfoPOSIX_arm64.cpp.
References m_tls_regnum_collection.
|
inline |
Definition at line 126 of file RegisterInfoPOSIX_arm64.h.
References lldb_private::Flags::AnySet(), eRegsetMaskZA, and m_opt_regsets.
|
inline |
Definition at line 127 of file RegisterInfoPOSIX_arm64.h.
References lldb_private::Flags::AnySet(), eRegsetMaskZT, and m_opt_regsets.
|
inline |
Definition at line 117 of file RegisterInfoPOSIX_arm64.h.
References eVectorQuadwordAArch64, and eVectorQuadwordAArch64SVEMax.
Referenced by ConfigureVectorLengthSVE(), and ConfigureVectorLengthZA().
|
private |
Definition at line 177 of file RegisterInfoPOSIX_arm64.h.
Referenced by AddRegSetMTE(), AddRegSetPAuth(), AddRegSetSME(), AddRegSetTLS(), and RegisterInfoPOSIX_arm64().
|
private |
Definition at line 178 of file RegisterInfoPOSIX_arm64.h.
Referenced by AddRegSetMTE(), AddRegSetPAuth(), AddRegSetSME(), AddRegSetTLS(), and RegisterInfoPOSIX_arm64().
|
private |
Definition at line 181 of file RegisterInfoPOSIX_arm64.h.
Referenced by AddRegSetMTE(), GetMTEOffset(), and IsMTEReg().
|
private |
Definition at line 175 of file RegisterInfoPOSIX_arm64.h.
Referenced by IsMTEPresent(), IsPAuthPresent(), IsSSVEPresent(), IsSVEPresent(), IsTLSPresent(), IsZAPresent(), IsZTPresent(), and RegisterInfoPOSIX_arm64().
|
private |
Definition at line 173 of file RegisterInfoPOSIX_arm64.h.
Referenced by AddRegSetMTE(), AddRegSetPAuth(), AddRegSetSME(), AddRegSetTLS(), GetRegisterSetFromRegisterIndex(), and RegisterInfoPOSIX_arm64().
|
private |
Definition at line 158 of file RegisterInfoPOSIX_arm64.h.
Referenced by ConfigureVectorLengthSVE().
|
private |
Definition at line 166 of file RegisterInfoPOSIX_arm64.h.
Referenced by ConfigureVectorLengthSVE(), GetRegisterCount(), and RegisterInfoPOSIX_arm64().
|
private |
Definition at line 165 of file RegisterInfoPOSIX_arm64.h.
Referenced by ConfigureVectorLengthSVE(), ConfigureVectorLengthZA(), GetMTEOffset(), GetPAuthOffset(), GetRegisterInfo(), GetSMEOffset(), GetTLSOffset(), and RegisterInfoPOSIX_arm64().
|
private |
Definition at line 169 of file RegisterInfoPOSIX_arm64.h.
Referenced by AddRegSetMTE(), AddRegSetPAuth(), AddRegSetSME(), AddRegSetTLS(), GetRegisterSetCount(), and RegisterInfoPOSIX_arm64().
|
private |
Definition at line 168 of file RegisterInfoPOSIX_arm64.h.
Referenced by GetRegisterSet(), and RegisterInfoPOSIX_arm64().
|
private |
Definition at line 183 of file RegisterInfoPOSIX_arm64.h.
Referenced by AddRegSetSME(), ConfigureVectorLengthZA(), GetRegNumSMESVG(), GetSMEOffset(), IsSMEReg(), IsSMERegZA(), and IsSMERegZT().
|
private |
Definition at line 182 of file RegisterInfoPOSIX_arm64.h.
Referenced by AddRegSetTLS(), GetTLSOffset(), and IsTLSReg().
|
private |
Definition at line 160 of file RegisterInfoPOSIX_arm64.h.
Referenced by ConfigureVectorLengthSVE(), and IsSVEReg().
|
private |
Definition at line 161 of file RegisterInfoPOSIX_arm64.h.
Referenced by ConfigureVectorLengthZA().
|
private |
Definition at line 180 of file RegisterInfoPOSIX_arm64.h.
Referenced by AddRegSetPAuth(), GetPAuthOffset(), and IsPAuthReg().