23std::unique_ptr<RegisterContextCorePOSIX_arm64>
26 llvm::ArrayRef<CoreNote> notes) {
67 auto register_info_up =
68 std::make_unique<RegisterInfoPOSIX_arm64>(arch, opt_regsets);
69 return std::unique_ptr<RegisterContextCorePOSIX_arm64>(
75 Thread &thread, std::unique_ptr<RegisterInfoPOSIX_arm64> register_info,
76 const DataExtractor &gpregset, llvm::ArrayRef<CoreNote> notes)
84 std::optional<uint64_t> auxv_at_hwcap =
86 std::optional<uint64_t> auxv_at_hwcap2 =
90 auxv_at_hwcap2.value_or(0));
99 const llvm::Triple &target_triple =
154 uint64_t sve_header_field_offset = 8;
158 sve_header_field_offset = 12;
159 uint16_t sve_header_flags_field =
212 return sve_reg_offset;
224 return error.Success();
239 return error.Success();
273 }
else if (
IsSVE(reg)) {
280 case SVEState::FPSIMD: {
284 uint64_t byte_size = 1;
286 const uint8_t *src = &zeros;
297 case SVEState::Streaming:
304 case SVEState::Disabled:
313 }
else if (
IsTLS(reg)) {
318 }
else if (
IsMTE(reg)) {
323 }
else if (
IsSME(reg)) {
344 const uint8_t *src =
nullptr;
345 std::vector<uint8_t> disabled_za_data;
350 disabled_za_data.resize(za_note_size);
351 std::fill(disabled_za_data.begin(), disabled_za_data.end(), 0);
352 src = disabled_za_data.data();
374 return error.Success();
static llvm::raw_ostream & error(Stream &strm)
@ AUXV_AT_HWCAP2
Extension of AT_HWCAP.
@ AUXV_AT_HWCAP
Machine dependent hints about processor capabilities.
std::optional< uint64_t > GetAuxValue(enum EntryType entry_type) const
lldb_private::DataExtractor GetAuxvData() override
lldb_private::ArchSpec GetArchitecture()
lldb_private::DataExtractor m_gpr_data
static std::unique_ptr< RegisterContextCorePOSIX_arm64 > Create(lldb_private::Thread &thread, const lldb_private::ArchSpec &arch, const lldb_private::DataExtractor &gpregset, llvm::ArrayRef< lldb_private::CoreNote > notes)
~RegisterContextCorePOSIX_arm64() override
struct sme_pseudo_regs m_sme_pseudo_regs
RegisterContextCorePOSIX_arm64(lldb_private::Thread &thread, std::unique_ptr< RegisterInfoPOSIX_arm64 > register_info, const lldb_private::DataExtractor &gpregset, llvm::ArrayRef< lldb_private::CoreNote > notes)
bool HardwareSingleStep(bool enable) override
lldb_private::DataExtractor m_pac_data
lldb_private::DataExtractor m_fpr_data
uint32_t CalculateSVEOffset(const lldb_private::RegisterInfo *reg_info)
lldb_private::DataExtractor m_tls_data
bool ReadAllRegisterValues(lldb::WritableDataBufferSP &data_sp) override
const uint8_t * GetSVEBuffer(uint64_t offset=0)
lldb_private::DataExtractor m_zt_data
bool WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override
lldb_private::DataExtractor m_za_data
bool WriteRegister(const lldb_private::RegisterInfo *reg_info, const lldb_private::RegisterValue &value) override
uint16_t m_sve_vector_length
lldb_private::DataExtractor m_mte_data
lldb_private::LinuxArm64RegisterFlags m_linux_register_flags
bool ReadRegister(const lldb_private::RegisterInfo *reg_info, lldb_private::RegisterValue &value) override
lldb_private::DataExtractor m_sve_data
void ConfigureRegisterContext()
uint32_t GetRegNumFPSR() const
uint32_t GetRegNumSVEZ0() const
virtual const lldb_private::RegisterInfo * GetRegisterInfo()
const lldb_private::RegisterInfo * GetRegisterInfoAtIndex(size_t reg) override
std::unique_ptr< RegisterInfoPOSIX_arm64 > m_register_info_up
virtual size_t GetGPRSize()
bool IsSVEZ(unsigned reg) const
bool IsPAuth(unsigned reg) const
bool IsMTE(unsigned reg) const
bool IsSME(unsigned reg) const
bool IsTLS(unsigned reg) const
size_t GetRegisterCount() override
bool IsSVE(unsigned reg) const
bool IsSVEVG(unsigned reg) const
uint32_t GetRegNumFPCR() const
An architecture specification class.
llvm::Triple & GetTriple()
Architecture triple accessor.
ValueType Set(ValueType mask)
Set one or more flags by logical OR'ing mask with the current flags.
void DetectFields(uint64_t hwcap, uint64_t hwcap2)
For the registers listed in this class, detect which fields are present.
void UpdateRegisterInfo(const RegisterInfo *reg_info, uint32_t num_regs)
Add the field information of any registers named in this class, to the relevant RegisterInfo instance...
uint32_t SetFromMemoryData(const RegisterInfo ®_info, const void *src, uint32_t src_len, lldb::ByteOrder src_byte_order, Status &error)
lldb::ProcessSP GetProcess() const
#define LLDB_INVALID_INDEX32
#define LLDB_INVALID_REGNUM
lldb::ByteOrder InlHostByteOrder()
uint16_t vq_from_vl(uint16_t vl)
const uint32_t ptrace_fpsimd_offset
uint32_t PTraceFPSROffset(uint16_t vq)
uint32_t PTraceFPCROffset(uint16_t vq)
const uint16_t ptrace_regs_mask
const uint16_t ptrace_regs_sve
uint16_t vl_valid(uint16_t vl)
const uint16_t ptrace_regs_fpsimd
user_sve_header user_za_header
A class that represents a running process on the host machine.
DataExtractor getRegset(llvm::ArrayRef< CoreNote > Notes, const llvm::Triple &Triple, llvm::ArrayRef< RegsetDesc > RegsetDescs)
constexpr RegsetDesc AARCH64_TLS_Desc[]
constexpr RegsetDesc AARCH64_ZT_Desc[]
constexpr RegsetDesc AARCH64_SSVE_Desc[]
constexpr RegsetDesc FPR_Desc[]
constexpr RegsetDesc AARCH64_MTE_Desc[]
constexpr RegsetDesc AARCH64_SVE_Desc[]
constexpr RegsetDesc AARCH64_PAC_Desc[]
constexpr RegsetDesc AARCH64_ZA_Desc[]
std::shared_ptr< lldb_private::DataBuffer > DataBufferSP
std::shared_ptr< lldb_private::WritableDataBuffer > WritableDataBufferSP
@ eRegisterKindLLDB
lldb's internal register numbers
Every register is described in detail including its name, alternate name (optional),...
uint32_t * value_regs
List of registers (terminated with LLDB_INVALID_REGNUM).
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.
uint32_t kinds[lldb::kNumRegisterKinds]
Holds all of the various register numbers for all register kinds.