[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL v2 15/20] target/i386: Preserve DisasContextBase.insn_start across
|
From: |
Richard Henderson |
|
Subject: |
[PULL v2 15/20] target/i386: Preserve DisasContextBase.insn_start across rewind |
|
Date: |
Tue, 9 Apr 2024 09:35:58 -1000 |
When aborting translation of the current insn, restore the
previous value of insn_start.
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Tested-by: Jørgen Hansen <Jorgen.Hansen@wdc.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
target/i386/tcg/translate.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c
index 07f642dc9e..76a42c679c 100644
--- a/target/i386/tcg/translate.c
+++ b/target/i386/tcg/translate.c
@@ -139,6 +139,7 @@ typedef struct DisasContext {
TCGv_i64 tmp1_i64;
sigjmp_buf jmpbuf;
+ TCGOp *prev_insn_start;
TCGOp *prev_insn_end;
} DisasContext;
@@ -3123,6 +3124,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
/* END TODO */
s->base.num_insns--;
tcg_remove_ops_after(s->prev_insn_end);
+ s->base.insn_start = s->prev_insn_start;
s->base.is_jmp = DISAS_TOO_MANY;
return false;
default:
@@ -6995,6 +6997,7 @@ static void i386_tr_insn_start(DisasContextBase *dcbase,
CPUState *cpu)
DisasContext *dc = container_of(dcbase, DisasContext, base);
target_ulong pc_arg = dc->base.pc_next;
+ dc->prev_insn_start = dc->base.insn_start;
dc->prev_insn_end = tcg_last_op();
if (tb_cflags(dcbase->tb) & CF_PCREL) {
pc_arg &= ~TARGET_PAGE_MASK;
--
2.34.1
- [PULL v2 05/20] target/sh4: mac.w: memory accesses are 16-bit words, (continued)
- [PULL v2 05/20] target/sh4: mac.w: memory accesses are 16-bit words, Richard Henderson, 2024/04/09
- [PULL v2 06/20] target/sh4: Merge mach and macl into a union, Richard Henderson, 2024/04/09
- [PULL v2 07/20] target/sh4: Fix mac.l with saturation enabled, Richard Henderson, 2024/04/09
- [PULL v2 08/20] target/sh4: Fix mac.w with saturation enabled, Richard Henderson, 2024/04/09
- [PULL v2 09/20] target/sh4: add missing CHECK_NOT_DELAY_SLOT, Richard Henderson, 2024/04/09
- [PULL v2 10/20] target/m68k: Map FPU exceptions to FPSR register, Richard Henderson, 2024/04/09
- [PULL v2 11/20] tcg: Add TCGContext.emit_before_op, Richard Henderson, 2024/04/09
- [PULL v2 12/20] accel/tcg: Add insn_start to DisasContextBase, Richard Henderson, 2024/04/09
- [PULL v2 14/20] target/hppa: Use insn_start from DisasContextBase, Richard Henderson, 2024/04/09
- [PULL v2 13/20] target/arm: Use insn_start from DisasContextBase, Richard Henderson, 2024/04/09
- [PULL v2 15/20] target/i386: Preserve DisasContextBase.insn_start across rewind,
Richard Henderson <=
- [PULL v2 16/20] target/microblaze: Use insn_start from DisasContextBase, Richard Henderson, 2024/04/09
- [PULL v2 17/20] target/riscv: Use insn_start from DisasContextBase, Richard Henderson, 2024/04/09
- [PULL v2 18/20] target/s390x: Use insn_start from DisasContextBase, Richard Henderson, 2024/04/09
- [PULL v2 19/20] accel/tcg: Improve can_do_io management, Richard Henderson, 2024/04/09
- [PULL v2 20/20] linux-user: Preserve unswapped siginfo_t for strace, Richard Henderson, 2024/04/09
- Re: [PULL v2 00/20] misc patch queue, Peter Maydell, 2024/04/10
- Re: [PULL v2 00/20] misc patch queue, Michael Tokarev, 2024/04/10