aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/x86/arch-transform-dis.inc.h2
-rw-r--r--lib/x86/jump-patch.h2
2 files changed, 2 insertions, 2 deletions
diff --git a/lib/x86/arch-transform-dis.inc.h b/lib/x86/arch-transform-dis.inc.h
index 6ec6c16..67390c9 100644
--- a/lib/x86/arch-transform-dis.inc.h
+++ b/lib/x86/arch-transform-dis.inc.h
@@ -76,7 +76,7 @@ static void transform_dis_branch(struct transform_dis_ctx *ctx, uint_tptr dpc,
code += ctx->base.op_size;
struct arch_dis_ctx arch;
- uintptr_t source = ctx->pc_trampoline + 2;
+ uintptr_t source = ctx->pc_trampoline + ctx->base.op_size + 2;
int size = jump_patch_size(source, dpc, arch, true);
/* If not taken, jmp past the big jump - this is a bit suboptimal but not
* that bad.
diff --git a/lib/x86/jump-patch.h b/lib/x86/jump-patch.h
index 8cd7d6f..ca7b16c 100644
--- a/lib/x86/jump-patch.h
+++ b/lib/x86/jump-patch.h
@@ -15,7 +15,7 @@ static inline int jump_patch_size(uint_tptr pc, uint_tptr dpc,
static inline void make_jump_patch(void **codep, uint_tptr pc, uint_tptr dpc,
UNUSED struct arch_dis_ctx arch) {
- uint_tptr diff = pc - (dpc + 5);
+ uint_tptr diff = dpc - (pc + 5);
void *code = *codep;
if (diff == (uint_tptr) (int32_t) diff) {
op8(&code, 0xe9);