Message ID | 20220906100932.343523-22-richard.henderson@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | target/i386: pc-relative translation blocks | expand |
On Tue, Sep 6, 2022 at 12:09 PM Richard Henderson <richard.henderson@linaro.org> wrote: > > With gen_jmp_rel, we may chain between two translation blocks > which may only be separated because of TB size limits. > > 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 7a9e533c6e..97a5f7e432 100644 > --- a/target/i386/tcg/translate.c > +++ b/target/i386/tcg/translate.c > @@ -8740,6 +8740,9 @@ static void i386_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu) > case DISAS_NORETURN: > break; > case DISAS_TOO_MANY: > + gen_update_cc_op(dc); > + gen_jmp_rel(dc, MO_32, 0, 0); > + break; > case DISAS_EOB_NEXT: > gen_update_cc_op(dc); > gen_update_eip_cur(dc); Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 7a9e533c6e..97a5f7e432 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -8740,6 +8740,9 @@ static void i386_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu) case DISAS_NORETURN: break; case DISAS_TOO_MANY: + gen_update_cc_op(dc); + gen_jmp_rel(dc, MO_32, 0, 0); + break; case DISAS_EOB_NEXT: gen_update_cc_op(dc); gen_update_eip_cur(dc);
With gen_jmp_rel, we may chain between two translation blocks which may only be separated because of TB size limits. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 3 +++ 1 file changed, 3 insertions(+)