aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorcomex2015-02-09 00:11:12 -0500
committercomex2015-02-09 00:11:12 -0500
commit8acf2ff8e069d5eb78df0a6c3b855c0397741adf (patch)
tree38f0748c16f88157cf4e8849bbd72ec561a6480a /lib
parentmore (diff)
downloadsubstitute-8acf2ff8e069d5eb78df0a6c3b855c0397741adf.tar.gz
Fix a broken bit test.
Diffstat (limited to 'lib')
-rw-r--r--lib/arm/arch-transform-dis.inc.h4
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);