aboutsummaryrefslogtreecommitdiff
path: root/lib/arm
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lib/arm/misc.h6
-rw-r--r--lib/arm/transform-dis-arm-multi.inc.h1
-rw-r--r--lib/arm64/misc.h4
-rw-r--r--lib/arm64/transform-dis-arm64.inc.h1
4 files changed, 7 insertions, 5 deletions
diff --git a/lib/arm/misc.h b/lib/arm/misc.h
index 02b06fe..ef11a05 100644
--- a/lib/arm/misc.h
+++ b/lib/arm/misc.h
@@ -50,10 +50,10 @@ static inline void advance_it_cond(struct arch_dis_ctx *ctx) {
/* Types of conditionals for 'branch' */
/* a regular old branch-with-condition */
-#define CC_ARMCC (CC_CONDITIONAL | 0x200)
+#define CC_ARMCC (CC_CONDITIONAL | 0x400)
/* already in an IT block - in transform_dis this will be rewritten to a branch
* anyway, so it can be treated as unconditional; in jump_dis we have to know
* to keep going */
-#define CC_ALREADY_IN_IT (CC_CONDITIONAL | 0x400)
+#define CC_ALREADY_IN_IT (CC_CONDITIONAL | 0x800)
/* CBZ/CBNZ is rewritten */
-#define CC_CBXZ (CC_CONDITIONAL | 0x800)
+#define CC_CBXZ (CC_CONDITIONAL | 0xc00)
diff --git a/lib/arm/transform-dis-arm-multi.inc.h b/lib/arm/transform-dis-arm-multi.inc.h
index e080866..6e91ff5 100644
--- a/lib/arm/transform-dis-arm-multi.inc.h
+++ b/lib/arm/transform-dis-arm-multi.inc.h
@@ -1,3 +1,4 @@
+/* TODO fix BL incl MOV LR, PC */
#include "arm/assemble.h"
static struct assemble_ctx tdctx_to_actx(const struct transform_dis_ctx *ctx) {
diff --git a/lib/arm64/misc.h b/lib/arm64/misc.h
index c21bc0b..f5a6154 100644
--- a/lib/arm64/misc.h
+++ b/lib/arm64/misc.h
@@ -32,5 +32,5 @@ static inline int arm64_get_unwritten_temp_reg(struct arch_dis_ctx *ctx) {
return 31 - __builtin_clz(avail);
}
-#define CC_ARMCC (CC_CONDITIONAL | 0x200)
-#define CC_XBXZ (CC_CONDITIONAL | 0x400)
+#define CC_ARMCC (CC_CONDITIONAL | 0x400)
+#define CC_XBXZ (CC_CONDITIONAL | 0x800)
diff --git a/lib/arm64/transform-dis-arm64.inc.h b/lib/arm64/transform-dis-arm64.inc.h
index a98932d..792b835 100644
--- a/lib/arm64/transform-dis-arm64.inc.h
+++ b/lib/arm64/transform-dis-arm64.inc.h
@@ -17,6 +17,7 @@ void transform_dis_pcrel(struct transform_dis_ctx *ctx, uintptr_t dpc, unsigned
static NOINLINE UNUSED
void transform_dis_branch(struct transform_dis_ctx *ctx, uintptr_t dpc, int cc) {
+ /* TODO fix BL */
#ifdef TRANSFORM_DIS_VERBOSE
printf("transform_dis (%p): branch => %p\n", (void *) ctx->pc, (void *) dpc);
#endif