1#ifndef ARION_LNX_ARCH_ARM_HPP
2#define ARION_LNX_ARCH_ARM_HPP
20 UC_ARM_REG_R0, UC_ARM_REG_R1, UC_ARM_REG_R2, UC_ARM_REG_R3, UC_ARM_REG_R4, UC_ARM_REG_R5,
21 UC_ARM_REG_R6, UC_ARM_REG_R7, UC_ARM_REG_R8, UC_ARM_REG_R9, UC_ARM_REG_R10, UC_ARM_REG_FP,
22 UC_ARM_REG_IP, UC_ARM_REG_SP, UC_ARM_REG_LR, UC_ARM_REG_PC, UC_ARM_REG_CPSR, UC_ARM_REG_INVALID};
75inline std::vector<arion::REG>
uc_fp_regs = {UC_ARM_REG_D0, UC_ARM_REG_D1, UC_ARM_REG_D2, UC_ARM_REG_D3,
76 UC_ARM_REG_D4, UC_ARM_REG_D5, UC_ARM_REG_D6, UC_ARM_REG_D7};
97 std::map<arion::REG, arion::RVAL>
prstatus_to_regs(std::vector<arion::BYTE> prstatus)
override;
103 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 ARM chip emulation.
Definition arch_arm.hpp:660
Linux ARM architecture manager class for Arion.
Definition lnx_arch_arm.hpp:83
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
uint64_t pack_fp_reg(const struct arion_lnx_arm::fp_reg *r)
Definition lnx_arch_arm.hpp:9
std::vector< arion::REG > uc_pt_regs
A vector mapping the Linux pt_regs structure indices to ARION's universal register enumeration (arion...
Definition lnx_arch_arm.hpp:19
arion_lnx_type::elf_greg_t elf_gregset_t[ELF_NGREG]
Definition of the general-purpose register set type for ELF notes.
Definition lnx_arch_arm.hpp:27
std::vector< arion::REG > uc_fp_regs
A vector mapping the FPU registers to ARION's universal register enumeration (arion::REG).
Definition lnx_arch_arm.hpp:75
const size_t ELF_NGREG
The number of 32-bit words (general registers) in the pt_regs structure, used for ELF notes.
Definition lnx_arch_arm.hpp:25
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 ARM, containing general registers.
Definition lnx_arch_arm.hpp:31
elf_gregset_t pr_reg
The general-purpose registers captured.
Definition lnx_arch_arm.hpp:35
int pr_fpvalid
Flag indicating whether floating-point registers are valid.
Definition lnx_arch_arm.hpp:37
Structure representing a single ARM floating-point register (double-precision format).
Definition lnx_arch_arm.hpp:42
unsigned int unused
Unused bits.
Definition lnx_arch_arm.hpp:46
unsigned int mantissa0
Low 32 bits of the mantissa.
Definition lnx_arch_arm.hpp:56
unsigned int sign2
Sign bit of the exponent.
Definition lnx_arch_arm.hpp:48
unsigned int mantissa1
High 31 bits of the mantissa.
Definition lnx_arch_arm.hpp:54
unsigned int j
Integer bit in normalized representation.
Definition lnx_arch_arm.hpp:52
unsigned int exponent
Exponent part.
Definition lnx_arch_arm.hpp:50
unsigned int sign1
Sign bit of the mantissa.
Definition lnx_arch_arm.hpp:44
Structure represents the ARM processor's register state as saved on the stack by the Linux kernel.
Definition lnx_arch_arm.hpp:13
unsigned long uregs[18]
Array containing the core general-purpose and system registers (R0-R15, SP, LR, PC,...
Definition lnx_arch_arm.hpp:15
Structure representing the ARM floating-point unit (FPU) context as saved in the user area.
Definition lnx_arch_arm.hpp:61
struct fp_reg fpregs[8]
Array of 8 double-precision floating-point registers (D0-D7).
Definition lnx_arch_arm.hpp:63
unsigned int init_flag
Initialization flag for the FPU context.
Definition lnx_arch_arm.hpp:71
unsigned int fpcr
Floating-Point Control Register.
Definition lnx_arch_arm.hpp:67
unsigned int fpsr
Floating-Point Status Register.
Definition lnx_arch_arm.hpp:65
unsigned char ftype[8]
Array of floating-point type markers.
Definition lnx_arch_arm.hpp:69
Common fields shared across architecture-specific elf_prstatus structures in core dumps.
Definition lnx_kernel_utils.hpp:72