23 "AArch64-specific algorithms",
31std::unique_ptr<Architecture>
34 if (machine != llvm::Triple::aarch64 && machine != llvm::Triple::aarch64_be &&
35 machine != llvm::Triple::aarch64_32) {
45 uint32_t z_reg_byte_size = vg * 8;
50 for (
auto ® : regs) {
51 if (reg.value_regs ==
nullptr) {
52 if (reg.name[0] ==
'z' && isdigit(reg.name[1]))
53 reg.byte_size = z_reg_byte_size;
54 else if (reg.name[0] ==
'p' && isdigit(reg.name[1]))
56 else if (strcmp(reg.name,
"ffr") == 0)
66 for (
auto ® : regs) {
67 if (strcmp(reg.name,
"za") == 0) {
69 reg.byte_size = (svg * 8) * (svg * 8);
84 std::optional<uint64_t> vg_reg_value;
90 if (reg_value != fail_value && reg_value <= 32)
91 vg_reg_value = reg_value;
94 std::optional<uint64_t> svg_reg_value;
100 if (reg_value != fail_value && reg_value <= 32)
101 svg_reg_value = reg_value;
103 if (!svg_reg_value) {
105 if (darwin_svg_reg_info) {
112 if (reg_value != fail_value && reg_value <= 256) {
113 svg_reg_value = reg_value / 8;
118 vg_reg_value = reg_value / 8;
123 if (!vg_reg_value && !svg_reg_value)
static void UpdateARM64SMERegistersInfos(DynamicRegisterInfo::reg_collection_range regs, uint64_t svg)
static void UpdateARM64SVERegistersInfos(DynamicRegisterInfo::reg_collection_range regs, uint64_t vg)
#define LLDB_PLUGIN_DEFINE(PluginName)
An architecture specification class.
llvm::Triple::ArchType GetMachine() const
Returns a machine family for the current architecture.
static std::unique_ptr< Architecture > Create(const ArchSpec &arch)
bool ReconfigureRegisterInfo(DynamicRegisterInfo ®_info, DataExtractor ®_data, RegisterContext ®_context) const override
ArchitectureAArch64()=default
llvm::iterator_range< reg_collection::iterator > reg_collection_range
size_t GetRegisterDataByteSize() const
const lldb_private::RegisterInfo * GetRegisterInfo(uint32_t kind, uint32_t num) const
static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description, ABICreateInstance create_callback)
static bool UnregisterPlugin(ABICreateInstance create_callback)
uint64_t ReadRegisterAsUnsigned(uint32_t reg, uint64_t fail_value)
virtual lldb::ByteOrder GetByteOrder()
#define LLDB_INVALID_INDEX32
#define LLDB_INVALID_ADDRESS
A class that represents a running process on the host machine.
@ eRegisterKindLLDB
lldb's internal register numbers
Every register is described in detail including its name, alternate name (optional),...
uint32_t kinds[lldb::kNumRegisterKinds]
Holds all of the various register numbers for all register kinds.