9#ifndef LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERFLAGSLINUX_ARM64_H
10#define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERFLAGSLINUX_ARM64_H
13#include "llvm/ADT/StringRef.h"
55 using Fields = std::vector<RegisterFlags::Field>;
66 :
m_name(name),
m_flags(std::string(name) +
"_flags", size, {{
"", 0}}),
This class manages the storage and detection of register field information for Arm64 Linux registers.
static Fields DetectCPSRFields(uint64_t hwcap, uint64_t hwcap2)
static Fields DetectFPSRFields(uint64_t hwcap, uint64_t hwcap2)
static Fields DetectFPCRFields(uint64_t hwcap, uint64_t hwcap2)
struct lldb_private::LinuxArm64RegisterFlags::RegisterEntry m_registers[5]
static Fields DetectMTECtrlFields(uint64_t hwcap, uint64_t hwcap2)
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...
static Fields DetectSVCRFields(uint64_t hwcap, uint64_t hwcap2)
std::vector< RegisterFlags::Field > Fields
std::function< Fields(uint64_t, uint64_t)> DetectorFn
bool HasDetected() const
Returns true if field detection has been run at least once.
A class that represents a running process on the host machine.
RegisterEntry(llvm::StringRef name, unsigned size, DetectorFn detector)
Every register is described in detail including its name, alternate name (optional),...