summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--architecture.h23
1 files changed, 13 insertions, 10 deletions
diff --git a/architecture.h b/architecture.h
index af98ce3..a433cfd 100644
--- a/architecture.h
+++ b/architecture.h
@@ -55,7 +55,7 @@ typedef union {
#define CAPSTONE_CALL_32 X86_INS_CALL
#define WORDSIZE_32 4
-#elif defined(__aarch64__) || defined(_M_ARM64)
+#elif defined(__aarch64__) || defined(_M_ARM64) || defined(__arm__)
typedef union {
struct user_regs_64 {
@@ -64,10 +64,13 @@ typedef union {
} arm64;
struct user_regs_32 {
- unsigned int x;
+ unsigned int regs[18];
+ //unsigned int regs[14];
+ //unsigned int sp, pc, p0, vr;
} arm32;
} user_regs_t;
+/* todo - rename this arch constant */
#define ARCH_AARCH64
#define PROGMCTR_64 arm64.pc
@@ -80,14 +83,14 @@ typedef union {
#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 PROGMCTR_32 arm32.regs[15]
+#define STACKPTR_32 arm32.regs[13]
+#define BREAKPOINT_INSN_32 0xe7f001f0ul
+#define BREAKPOINT_MASK_32 0xfffffffful
+#define BREAKPOINT_ADJS_32 0x0
+#define CAPSTONE_ARCH_32 CS_ARCH_ARM
+#define CAPSTONE_MODE_32 CS_MODE_ARM
+#define CAPSTONE_CALL_32 ARM_INS_BL
#define WORDSIZE_32 4
#else