20std::unique_ptr<RegisterContextCorePOSIX_arm64>
23 llvm::ArrayRef<CoreNote> notes) {
37 auto register_info_up =
38 std::make_unique<RegisterInfoPOSIX_arm64>(arch, opt_regsets);
39 return std::unique_ptr<RegisterContextCorePOSIX_arm64>(
45 Thread &thread, std::unique_ptr<RegisterInfoPOSIX_arm64> register_info,
46 const DataExtractor &gpregset, llvm::ArrayRef<CoreNote> notes)
52 const llvm::Triple &target_triple =
87 uint64_t sve_header_field_offset = 8;
89 sve_header_field_offset = 12;
112 const RegisterInfo *reg_info) {
124 return sve_reg_offset;
132 offset = reg_info->byte_offset;
133 if (offset + reg_info->byte_size <=
GetGPRSize()) {
135 if (offset == reg_info->byte_offset + reg_info->byte_size) {
153 return error.Success();
175 if (reg_info->value_regs &&
177 sve_reg_num = reg_info->value_regs[0];
187 }
else if (
IsSVE(reg)) {
194 case SVEState::FPSIMD: {
198 uint64_t byte_size = 1;
200 const uint8_t *src = &zeros;
217 case SVEState::Disabled:
229 return error.Success();
233 lldb::WritableDataBufferSP &data_sp) {
243 const lldb::DataBufferSP &data_sp) {
static llvm::raw_ostream & error(Stream &strm)
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
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)
bool ReadAllRegisterValues(lldb::WritableDataBufferSP &data_sp) override
const uint8_t * GetSVEBuffer(uint64_t offset=0)
bool WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override
bool WriteRegister(const lldb_private::RegisterInfo *reg_info, const lldb_private::RegisterValue &value) override
uint16_t m_sve_vector_length
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
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 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.
uint32_t SetFromMemoryData(const RegisterInfo ®_info, const void *src, uint32_t src_len, lldb::ByteOrder src_byte_order, Status &error)
#define LLDB_INVALID_INDEX32
#define LLDB_INVALID_REGNUM
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
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 FPR_Desc[]
constexpr RegsetDesc AARCH64_SVE_Desc[]
constexpr RegsetDesc AARCH64_PAC_Desc[]
@ eRegisterKindLLDB
lldb's internal register numbers