diff options
author | comex | 2015-02-09 00:11:12 -0500 |
---|---|---|
committer | comex | 2015-02-09 00:11:12 -0500 |
commit | 8acf2ff8e069d5eb78df0a6c3b855c0397741adf (patch) | |
tree | 38f0748c16f88157cf4e8849bbd72ec561a6480a /lib/arm | |
parent | more (diff) | |
download | substitute-8acf2ff8e069d5eb78df0a6c3b855c0397741adf.tar.gz |
Fix a broken bit test.
Diffstat (limited to 'lib/arm')
-rw-r--r-- | lib/arm/arch-transform-dis.inc.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/arm/arch-transform-dis.inc.h b/lib/arm/arch-transform-dis.inc.h index 7cd8561..c5963e1 100644 --- a/lib/arm/arch-transform-dis.inc.h +++ b/lib/arm/arch-transform-dis.inc.h @@ -32,7 +32,7 @@ void transform_dis_data(struct transform_dis_ctx *ctx, unsigned o0, unsigned o1, (unsigned long long) ctx->base.pc, o0, o1, o2, o3, out_mask); #endif - /* We only care if at least one op is PC, so quickly test that. XXX */ + /* We only care if at least one op is PC, so quickly approximate that. */ if (((o0 | o1 | o2 | o3) & 15) != 15) return; unsigned *newval = ctx->base.newval; @@ -93,6 +93,8 @@ void transform_dis_data(struct transform_dis_ctx *ctx, unsigned o0, unsigned o1, if (actx.cond != 0xe) transform_dis_ret(ctx); } else { + if (!(in_regs & 1 << 15)) + return; if (out_reg != -1 && !(in_regs & 1 << out_reg)) { /* case 3 - ignore scratch */ MOVW_MOVT(actx, out_reg, pc); |