Commit d1fe018af8 for qemu.org
commit d1fe018af8bd14fd974767d07fb7f6e010b83e54
Author: Paolo Bonzini <pbonzini@redhat.com>
Date: Mon Oct 12 09:33:58 2026 +0200
target/i386/tcg: inline gen_leave
The function is a vestige of the old switch-based decoder and does
not add anything these days.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
diff --git a/target/i386/tcg/emit.c.inc b/target/i386/tcg/emit.c.inc
index ed56edf8a3..a1ae582174 100644
--- a/target/i386/tcg/emit.c.inc
+++ b/target/i386/tcg/emit.c.inc
@@ -2559,7 +2559,16 @@ static void gen_LEA(DisasContext *s, X86DecodedInsn *decode)
static void gen_LEAVE(DisasContext *s, X86DecodedInsn *decode)
{
- gen_leave(s);
+ MemOp d_ot = mo_pushpop(s, s->dflag);
+ MemOp a_ot = mo_stacksize(s);
+
+ gen_lea_ss_ofs(s, s->A0, cpu_regs[R_EBP], 0);
+ gen_op_ld_v(s, d_ot, s->T0, s->A0);
+
+ tcg_gen_addi_tl(s->T1, cpu_regs[R_EBP], 1 << d_ot);
+
+ gen_op_mov_reg_v(s, d_ot, R_EBP, s->T0);
+ gen_op_mov_reg_v(s, a_ot, R_ESP, s->T1);
}
static void gen_LES(DisasContext *s, X86DecodedInsn *decode)
diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c
index b2cbce046c..3d542acd97 100644
--- a/target/i386/tcg/translate.c
+++ b/target/i386/tcg/translate.c
@@ -2005,20 +2005,6 @@ static void gen_enter(DisasContext *s, int esp_addend, int level)
gen_op_mov_reg_v(s, a_ot, R_ESP, s->T1);
}
-static void gen_leave(DisasContext *s)
-{
- MemOp d_ot = mo_pushpop(s, s->dflag);
- MemOp a_ot = mo_stacksize(s);
-
- gen_lea_ss_ofs(s, s->A0, cpu_regs[R_EBP], 0);
- gen_op_ld_v(s, d_ot, s->T0, s->A0);
-
- tcg_gen_addi_tl(s->T1, cpu_regs[R_EBP], 1 << d_ot);
-
- gen_op_mov_reg_v(s, d_ot, R_EBP, s->T0);
- gen_op_mov_reg_v(s, a_ot, R_ESP, s->T1);
-}
-
/* an interrupt is different from an exception because of the
privilege checks */
static void gen_interrupt(DisasContext *s, uint8_t intno)