Fix wrong IP in x86_16 because of cs_base not substracted

This commit is contained in:
mio
2023-02-20 20:21:56 +01:00
parent 9c9356da6c
commit 133504b504
2 changed files with 33 additions and 2 deletions

View File

@@ -4816,7 +4816,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu)
}
// Sync PC in advance
gen_jmp_im(s, pc_start);
gen_jmp_im(s, pc_start - s->cs_base);
// save the last operand
prev_op = tcg_last_op(tcg_ctx);
@@ -9314,7 +9314,7 @@ static void i386_tr_insn_start(DisasContextBase *dcbase, CPUState *cpu)
DisasContext *dc = container_of(dcbase, DisasContext, base);
TCGContext *tcg_ctx = dc->uc->tcg_ctx;
dc->prev_pc = dc->base.pc_next;
dc->prev_pc = dc->base.pc_next - dc->cs_base;
tcg_gen_insn_start(tcg_ctx, dc->base.pc_next, dc->cc_op);
}