summaryrefslogtreecommitdiffstats
path: root/architecture.h
diff options
context:
space:
mode:
Diffstat (limited to 'architecture.h')
-rw-r--r--architecture.h35
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