diff options
Diffstat (limited to '')
-rw-r--r-- | lib/arm/misc.h | 6 | ||||
-rw-r--r-- | lib/arm/transform-dis-arm-multi.inc.h | 1 | ||||
-rw-r--r-- | lib/arm64/misc.h | 4 | ||||
-rw-r--r-- | lib/arm64/transform-dis-arm64.inc.h | 1 |
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 |