diff options
Diffstat (limited to 'architecture.h')
-rw-r--r-- | architecture.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/architecture.h b/architecture.h index 27cec2d..af98ce3 100644 --- a/architecture.h +++ b/architecture.h @@ -55,6 +55,41 @@ typedef union { #define CAPSTONE_CALL_32 X86_INS_CALL #define WORDSIZE_32 4 +#elif defined(__aarch64__) || defined(_M_ARM64) + +typedef union { + struct user_regs_64 { + unsigned long long regs[31]; + unsigned long long sp, pc, pstate; + } arm64; + + struct user_regs_32 { + unsigned int x; + } arm32; +} user_regs_t; + +#define ARCH_AARCH64 + +#define PROGMCTR_64 arm64.pc +#define STACKPTR_64 arm64.sp +#define BREAKPOINT_INSN_64 0xd4200000ul +#define BREAKPOINT_MASK_64 0xfffffffful +#define BREAKPOINT_ADJS_64 0x0 +#define CAPSTONE_ARCH_64 CS_ARCH_ARM64 +#define CAPSTONE_MODE_64 CS_MODE_ARM +#define CAPSTONE_CALL_64 ARM64_INS_BL +#define WORDSIZE_64 8 + +#define PROGMCTR_32 arm32.x +#define STACKPTR_32 arm32.x +#define BREAKPOINT_INSN_32 0 +#define BREAKPOINT_MASK_32 0 +#define BREAKPOINT_ADJS_32 0 +#define CAPSTONE_ARCH_32 0 +#define CAPSTONE_MODE_32 0 +#define CAPSTONE_CALL_32 0 +#define WORDSIZE_32 4 + #else #error Detected architecture is not supported! #endif |