diff options
author | comex | 2015-02-09 00:27:15 -0500 |
---|---|---|
committer | comex | 2015-02-09 00:27:15 -0500 |
commit | 00ceac163e5f6706c039a56b17cfb29111f2cc78 (patch) | |
tree | 81fa0be8b863a24a7c8201532f2c8142891d90e1 /lib | |
parent | add transform-dis-{i386,x86_64} to makefile - fix a missing UNUSED (diff) | |
download | substitute-00ceac163e5f6706c039a56b17cfb29111f2cc78.tar.gz |
call vs. branch fixes on ARM (though really I should just ignore calls)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/arm/dis-thumb.inc.h | 4 | ||||
-rw-r--r-- | lib/arm64/dis-main.inc.h | 2 |
2 files changed, 2 insertions, 4 deletions
diff --git a/lib/arm/dis-thumb.inc.h b/lib/arm/dis-thumb.inc.h index 6b6e841..4a2b747 100644 --- a/lib/arm/dis-thumb.inc.h +++ b/lib/arm/dis-thumb.inc.h @@ -14,9 +14,7 @@ static INLINE void P(GPR_Rm_B_1_tBX)(tdis_ctx ctx, struct bitslice Rm) { unsigned val = bs_get(Rm, ctx->base.op); if (val == 15) /* bx pc */ return P(bad)(ctx); - else if (val == 14) /* bx lr */ - return P(ret)(ctx); - return P(unidentified)(ctx); + return P(ret)(ctx); } static INLINE void P(GPR_Rm_unk_Rd_1_tMOVr)(tdis_ctx ctx, struct bitslice Rd, struct bitslice Rm) { unsigned Rd_val = bs_get(Rd, ctx->base.op); diff --git a/lib/arm64/dis-main.inc.h b/lib/arm64/dis-main.inc.h index 06d391e..0107715 100644 --- a/lib/arm64/dis-main.inc.h +++ b/lib/arm64/dis-main.inc.h @@ -12,7 +12,7 @@ static INLINE void P(am_b_target_addr_B_1_B)(tdis_ctx ctx, struct bitslice addr) } static INLINE void P(am_bl_target_addr_1_BL)(tdis_ctx ctx, struct bitslice addr) { return P(branch)(ctx, ctx->base.pc + sext(bs_get(addr, ctx->base.op), 26) * 4, - /*cc*/ 0); + /*cc*/ CC_CALL); } static INLINE void P(ccode_cond_am_brcond_target_B_1_Bcc)(tdis_ctx ctx, struct bitslice cond, struct bitslice target) { int bits = bs_get(cond, ctx->base.op); |