Message ID | 20220906100932.343523-5-richard.henderson@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | target/i386: pc-relative translation blocks | expand |
On 6/9/22 12:09, Richard Henderson wrote: > All callers pass s->base.pc_next and s->pc, which we can just > as well compute within the function. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > target/i386/tcg/translate.c | 13 ++++++------- > 1 file changed, 6 insertions(+), 7 deletions(-) > > diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c > index 58e74c3162..0210382f77 100644 > --- a/target/i386/tcg/translate.c > +++ b/target/i386/tcg/translate.c > @@ -2602,13 +2602,12 @@ static void gen_unknown_opcode(CPUX86State *env, DisasContext *s) > > /* an interrupt is different from an exception because of the > privilege checks */ > -static void gen_interrupt(DisasContext *s, int intno, > - target_ulong cur_eip, target_ulong next_eip) > +static void gen_interrupt(DisasContext *s, int intno) > { > gen_update_cc_op(s); > - gen_jmp_im(s, cur_eip); > - gen_helper_raise_interrupt(cpu_env, tcg_const_i32(intno), > - tcg_const_i32(next_eip - cur_eip)); > + gen_jmp_im(s, s->base.pc_next - s->cs_base); > + gen_helper_raise_interrupt(cpu_env, tcg_constant_i32(intno), > + tcg_constant_i32(s->pc - s->base.pc_next)); Maybe note the switch to tcg_constant() in the description? Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
On Tue, Sep 6, 2022 at 4:46 PM Philippe Mathieu-Daudé <f4bug@amsat.org> wrote: > > On 6/9/22 12:09, Richard Henderson wrote: > > All callers pass s->base.pc_next and s->pc, which we can just > > as well compute within the function. > > > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > > --- > > target/i386/tcg/translate.c | 13 ++++++------- > > 1 file changed, 6 insertions(+), 7 deletions(-) > > > > diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c > > index 58e74c3162..0210382f77 100644 > > --- a/target/i386/tcg/translate.c > > +++ b/target/i386/tcg/translate.c > > @@ -2602,13 +2602,12 @@ static void gen_unknown_opcode(CPUX86State *env, DisasContext *s) > > > > /* an interrupt is different from an exception because of the > > privilege checks */ > > -static void gen_interrupt(DisasContext *s, int intno, > > - target_ulong cur_eip, target_ulong next_eip) > > +static void gen_interrupt(DisasContext *s, int intno) > > { > > gen_update_cc_op(s); > > - gen_jmp_im(s, cur_eip); > > - gen_helper_raise_interrupt(cpu_env, tcg_const_i32(intno), > > - tcg_const_i32(next_eip - cur_eip)); > > + gen_jmp_im(s, s->base.pc_next - s->cs_base); > > + gen_helper_raise_interrupt(cpu_env, tcg_constant_i32(intno), > > + tcg_constant_i32(s->pc - s->base.pc_next)); Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 58e74c3162..0210382f77 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -2602,13 +2602,12 @@ static void gen_unknown_opcode(CPUX86State *env, DisasContext *s) /* an interrupt is different from an exception because of the privilege checks */ -static void gen_interrupt(DisasContext *s, int intno, - target_ulong cur_eip, target_ulong next_eip) +static void gen_interrupt(DisasContext *s, int intno) { gen_update_cc_op(s); - gen_jmp_im(s, cur_eip); - gen_helper_raise_interrupt(cpu_env, tcg_const_i32(intno), - tcg_const_i32(next_eip - cur_eip)); + gen_jmp_im(s, s->base.pc_next - s->cs_base); + gen_helper_raise_interrupt(cpu_env, tcg_constant_i32(intno), + tcg_constant_i32(s->pc - s->base.pc_next)); s->base.is_jmp = DISAS_NORETURN; } @@ -7307,12 +7306,12 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) } break; case 0xcc: /* int3 */ - gen_interrupt(s, EXCP03_INT3, s->base.pc_next - s->cs_base, s->pc - s->cs_base); + gen_interrupt(s, EXCP03_INT3); break; case 0xcd: /* int N */ val = x86_ldub_code(env, s); if (check_vm86_iopl(s)) { - gen_interrupt(s, val, s->base.pc_next - s->cs_base, s->pc - s->cs_base); + gen_interrupt(s, val); } break; case 0xce: /* into */
All callers pass s->base.pc_next and s->pc, which we can just as well compute within the function. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-)