aboutsummaryrefslogtreecommitdiff
path: root/lib/arm64
diff options
context:
space:
mode:
authorcomex2015-02-23 00:52:55 -0500
committercomex2015-02-23 00:54:14 -0500
commit3ea0b595a9783282c233f0c7910c11688f9ae721 (patch)
treea1ba64ff739fb2852c2f13a2dfe85deabe362b37 /lib/arm64
parentBan calls within transform regions in threadsafe mode. (diff)
downloadsubstitute-3ea0b595a9783282c233f0c7910c11688f9ae721.tar.gz
Add transform-dis-cases-arm64.S and fix a serious bug thus discovered.
Commit transform-dis-cases-x86_64.S, which I forgot to earlier.
Diffstat (limited to 'lib/arm64')
-rw-r--r--lib/arm64/arch-transform-dis.inc.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/arm64/arch-transform-dis.inc.h b/lib/arm64/arch-transform-dis.inc.h
index 123c7ae..73fe227 100644
--- a/lib/arm64/arch-transform-dis.inc.h
+++ b/lib/arm64/arch-transform-dis.inc.h
@@ -45,7 +45,7 @@ void transform_dis_branch(struct transform_dis_ctx *ctx, uint_tptr dpc, int cc)
static void transform_dis_pre_dis(UNUSED struct transform_dis_ctx *ctx) {}
static void transform_dis_post_dis(struct transform_dis_ctx *ctx) {
uint32_t op = ctx->base.op;
- ctx->arch.regs_possibly_written |= op & 31;
- ctx->arch.regs_possibly_written |= op >> 10 & 31;
- ctx->arch.regs_possibly_written |= op >> 16 & 31;
+ ctx->arch.regs_possibly_written |= 1 << (op & 31);
+ ctx->arch.regs_possibly_written |= 1 << (op >> 10 & 31);
+ ctx->arch.regs_possibly_written |= 1 << (op >> 16 & 31);
}