1#ifndef ARION_LNX_ARCH_ARM64_HPP
2#define ARION_LNX_ARCH_ARM64_HPP
26 UC_ARM64_REG_X0, UC_ARM64_REG_X1, UC_ARM64_REG_X2, UC_ARM64_REG_X3, UC_ARM64_REG_X4, UC_ARM64_REG_X5,
27 UC_ARM64_REG_X6, UC_ARM64_REG_X7, UC_ARM64_REG_X8, UC_ARM64_REG_X9, UC_ARM64_REG_X10, UC_ARM64_REG_X11,
28 UC_ARM64_REG_X12, UC_ARM64_REG_X13, UC_ARM64_REG_X14, UC_ARM64_REG_X15, UC_ARM64_REG_X16, UC_ARM64_REG_X17,
29 UC_ARM64_REG_X18, UC_ARM64_REG_X19, UC_ARM64_REG_X20, UC_ARM64_REG_X21, UC_ARM64_REG_X22, UC_ARM64_REG_X23,
30 UC_ARM64_REG_X24, UC_ARM64_REG_X25, UC_ARM64_REG_X26, UC_ARM64_REG_X27, UC_ARM64_REG_X28, UC_ARM64_REG_X29,
31 UC_ARM64_REG_X30, UC_ARM64_REG_SP, UC_ARM64_REG_PC, UC_ARM64_REG_PSTATE};
116 UC_ARM64_REG_V0, UC_ARM64_REG_V1, UC_ARM64_REG_V2, UC_ARM64_REG_V3, UC_ARM64_REG_V4, UC_ARM64_REG_V5,
117 UC_ARM64_REG_V6, UC_ARM64_REG_V7, UC_ARM64_REG_V8, UC_ARM64_REG_V9, UC_ARM64_REG_V10, UC_ARM64_REG_V11,
118 UC_ARM64_REG_V12, UC_ARM64_REG_V13, UC_ARM64_REG_V14, UC_ARM64_REG_V15, UC_ARM64_REG_V16, UC_ARM64_REG_V17,
119 UC_ARM64_REG_V18, UC_ARM64_REG_V19, UC_ARM64_REG_V20, UC_ARM64_REG_V21, UC_ARM64_REG_V22, UC_ARM64_REG_V23,
120 UC_ARM64_REG_V24, UC_ARM64_REG_V25, UC_ARM64_REG_V26, UC_ARM64_REG_V27, UC_ARM64_REG_V28, UC_ARM64_REG_V29,
121 UC_ARM64_REG_V30, UC_ARM64_REG_V31};
135 std::map<arion::REG, arion::RVAL>
prstatus_to_regs(std::vector<arion::BYTE> prstatus)
override;
141 std::map<arion::REG, arion::RVAL>
fpregset_to_regs(std::vector<arion::BYTE> fpregset)
override;
Abstract base class for managing Linux architecture-specific details, particularly for core dump pars...
Definition lnx_arch_manager.hpp:28
A class responsible for performing architecture specific operations in case of an ARM64 chip emulatio...
Definition arch_arm64.hpp:614
Linux AArch64 architecture manager class for Arion.
Definition lnx_arch_arm64.hpp:128
std::map< arion::REG, arion::RVAL > fpregset_to_regs(std::vector< arion::BYTE > fpregset) override
std::map< arion::REG, arion::RVAL > prstatus_to_regs(std::vector< arion::BYTE > prstatus) override
Definition lnx_arch_arm64.hpp:9
const size_t ELF_NGREG
The number of 64-bit words (general registers) in the user-visible user_pt_regs structure,...
Definition lnx_arch_arm64.hpp:86
std::vector< arion::REG > uc_fpsimd_regs
A vector mapping the FPSIMD vector registers to ARION's universal register enumeration (arion::REG).
Definition lnx_arch_arm64.hpp:115
std::vector< arion::REG > uc_user_pt_regs
A vector mapping the user_pt_regs fields to ARION's universal register enumeration (arion::REG).
Definition lnx_arch_arm64.hpp:25
arion_lnx_type::elf_greg_t elf_gregset_t[ELF_NGREG]
Definition of the general-purpose register set type for ELF notes (NT_PRSTATUS).
Definition lnx_arch_arm64.hpp:88
Definition lnx_kernel_utils.hpp:16
unsigned long elf_greg_t
Type definition for a single general-purpose register value in an ELF core dump.
Definition lnx_kernel_utils.hpp:100
Structure for a process status ELF note (NT_PRSTATUS) for AArch64, containing general registers.
Definition lnx_arch_arm64.hpp:92
int pr_fpvalid
Flag indicating whether floating-point registers are valid.
Definition lnx_arch_arm64.hpp:98
elf_gregset_t pr_reg
The general-purpose registers captured.
Definition lnx_arch_arm64.hpp:96
Structure representing a frame record in the AArch64 stack unwind mechanism.
Definition lnx_arch_arm64.hpp:35
uint64_t lr
Link Register (LR/X30).
Definition lnx_arch_arm64.hpp:39
uint64_t fp
Frame Pointer (FP/X29).
Definition lnx_arch_arm64.hpp:37
Structure representing the full kernel-internal AArch64 register state.
Definition lnx_arch_arm64.hpp:53
struct frame_record_meta stackframe
Stack frame metadata.
Definition lnx_arch_arm64.hpp:77
uint64_t sp
Definition lnx_arch_arm64.hpp:62
uint64_t exit_rcu
RCU (Read-Copy-Update) exit counter.
Definition lnx_arch_arm64.hpp:82
uint64_t sdei_ttbr1
Security Device-Enabled Interrupts (SDEI) translation table base register 1.
Definition lnx_arch_arm64.hpp:75
int32_t syscallno
The system call number.
Definition lnx_arch_arm64.hpp:70
struct user_pt_regs user_regs
The standard user register set.
Definition lnx_arch_arm64.hpp:57
uint64_t orig_x0
Original value of X0 before a syscall.
Definition lnx_arch_arm64.hpp:68
uint64_t lockdep_hardirqs
Lock dependency tracking for hard interrupts.
Definition lnx_arch_arm64.hpp:80
uint64_t regs[31]
Definition lnx_arch_arm64.hpp:61
uint32_t pmr
Performance Monitoring Register (PMR).
Definition lnx_arch_arm64.hpp:72
uint64_t pc
Definition lnx_arch_arm64.hpp:63
uint64_t pstate
Definition lnx_arch_arm64.hpp:64
Structure representing the AArch64 Floating-Point and SIMD (FPSIMD) state.
Definition lnx_arch_arm64.hpp:103
__u32 fpsr
Floating-Point Status Register.
Definition lnx_arch_arm64.hpp:107
__uint128_t vregs[32]
Vector registers V0 to V31 (128-bit each).
Definition lnx_arch_arm64.hpp:105
__u32 __reserved[2]
Reserved padding.
Definition lnx_arch_arm64.hpp:111
__u32 fpcr
Floating-Point Control Register.
Definition lnx_arch_arm64.hpp:109
Structure representing the user-space view of AArch64 general registers saved by the kernel.
Definition lnx_arch_arm64.hpp:13
__u64 sp
Stack Pointer (SP).
Definition lnx_arch_arm64.hpp:17
__u64 pstate
Process State (PSTATE) register.
Definition lnx_arch_arm64.hpp:21
__u64 pc
Program Counter (PC).
Definition lnx_arch_arm64.hpp:19
__u64 regs[31]
General-purpose registers X0 to X30.
Definition lnx_arch_arm64.hpp:15
Common fields shared across architecture-specific elf_prstatus structures in core dumps.
Definition lnx_kernel_utils.hpp:72