aboutsummaryrefslogtreecommitdiff
path: root/lib/arm/arch-transform-dis.inc.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/arm/arch-transform-dis.inc.h')
-rw-r--r--lib/arm/arch-transform-dis.inc.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/arm/arch-transform-dis.inc.h b/lib/arm/arch-transform-dis.inc.h
index d74a06f..1e9579d 100644
--- a/lib/arm/arch-transform-dis.inc.h
+++ b/lib/arm/arch-transform-dis.inc.h
@@ -36,7 +36,7 @@ void transform_dis_data(struct transform_dis_ctx *ctx, unsigned o0, unsigned o1,
/* 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;
+ uint32_t *newval = ctx->base.newval;
newval[0] = o0;
newval[1] = o1;
newval[2] = o2;
@@ -178,6 +178,7 @@ void transform_dis_branch(struct transform_dis_ctx *ctx, uint_tptr dpc, int cc)
void **codep = ctx->rewritten_ptr_ptr;
ctx->write_newop_here = *codep; *codep += 2;
}
+ /* If it's a call, we should jump back after the call */
actx.cond = 0xe;
MOVW_MOVT(actx, 14, dpc | ctx->arch.pc_low_bit);
BLXr(actx, 14);