Message ID | 20200720154028.477457-1-richard.henderson@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | [for-5.1?] target/i386: Save cc_op before loop insns | expand |
Ping? On 7/20/20 8:40 AM, Richard Henderson wrote: > We forgot to update cc_op before these branch insns, > which lead to losing track of the current eflags. > > Buglink: https://bugs.launchpad.net/qemu/+bug/1888165 > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > target/i386/translate.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/target/i386/translate.c b/target/i386/translate.c > index a1d31f09c1..caea6f5fb1 100644 > --- a/target/i386/translate.c > +++ b/target/i386/translate.c > @@ -7148,6 +7148,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) > l1 = gen_new_label(); > l2 = gen_new_label(); > l3 = gen_new_label(); > + gen_update_cc_op(s); > b &= 3; > switch(b) { > case 0: /* loopnz */ >
Looks good, will queue when I am back---or just send a pull request yourself if you prefer. Paolo Il ven 24 lug 2020, 20:35 Richard Henderson <richard.henderson@linaro.org> ha scritto: > Ping? > > On 7/20/20 8:40 AM, Richard Henderson wrote: > > We forgot to update cc_op before these branch insns, > > which lead to losing track of the current eflags. > > > > Buglink: https://bugs.launchpad.net/qemu/+bug/1888165 > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > > --- > > target/i386/translate.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/target/i386/translate.c b/target/i386/translate.c > > index a1d31f09c1..caea6f5fb1 100644 > > --- a/target/i386/translate.c > > +++ b/target/i386/translate.c > > @@ -7148,6 +7148,7 @@ static target_ulong disas_insn(DisasContext *s, > CPUState *cpu) > > l1 = gen_new_label(); > > l2 = gen_new_label(); > > l3 = gen_new_label(); > > + gen_update_cc_op(s); > > b &= 3; > > switch(b) { > > case 0: /* loopnz */ > > > > <div dir="auto">Looks good, will queue when I am back---or just send a pull request yourself if you prefer.<div dir="auto"><br></div><div dir="auto">Paolo</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il ven 24 lug 2020, 20:35 Richard Henderson <<a href="mailto:richard.henderson@linaro.org">richard.henderson@linaro.org</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Ping?<br> <br> On 7/20/20 8:40 AM, Richard Henderson wrote:<br> > We forgot to update cc_op before these branch insns,<br> > which lead to losing track of the current eflags.<br> > <br> > Buglink: <a href="https://bugs.launchpad.net/qemu/+bug/1888165" rel="noreferrer noreferrer" target="_blank">https://bugs.launchpad.net/qemu/+bug/1888165</a><br> > Signed-off-by: Richard Henderson <<a href="mailto:richard.henderson@linaro.org" target="_blank" rel="noreferrer">richard.henderson@linaro.org</a>><br> > ---<br> > target/i386/translate.c | 1 +<br> > 1 file changed, 1 insertion(+)<br> > <br> > diff --git a/target/i386/translate.c b/target/i386/translate.c<br> > index a1d31f09c1..caea6f5fb1 100644<br> > --- a/target/i386/translate.c<br> > +++ b/target/i386/translate.c<br> > @@ -7148,6 +7148,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu)<br> > l1 = gen_new_label();<br> > l2 = gen_new_label();<br> > l3 = gen_new_label();<br> > + gen_update_cc_op(s);<br> > b &= 3;<br> > switch(b) {<br> > case 0: /* loopnz */<br> > <br> <br> </blockquote></div>
Richard Henderson <richard.henderson@linaro.org> writes: > We forgot to update cc_op before these branch insns, > which lead to losing track of the current eflags. > > Buglink: https://bugs.launchpad.net/qemu/+bug/1888165 > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > target/i386/translate.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/target/i386/translate.c b/target/i386/translate.c > index a1d31f09c1..caea6f5fb1 100644 > --- a/target/i386/translate.c > +++ b/target/i386/translate.c > @@ -7148,6 +7148,7 @@ static target_ulong disas_insn(DisasContext *s, > CPUState *cpu) At first I thought that was too broad to go in disas_insn and then I realised it was one of those mega functions.... > l1 = gen_new_label(); > l2 = gen_new_label(); > l3 = gen_new_label(); > + gen_update_cc_op(s); Seems legit: Reviewed-by: Alex Bennée <alex.bennee@linaro.org> <snip> -- Alex Bennée
On 7/24/20 11:53 AM, Paolo Bonzini wrote: > Looks good, will queue when I am back---or just send a pull request yourself if > you prefer. Ok, will do. Thanks. r~ > > Paolo > > Il ven 24 lug 2020, 20:35 Richard Henderson <richard.henderson@linaro.org > <mailto:richard.henderson@linaro.org>> ha scritto: > > Ping? > > On 7/20/20 8:40 AM, Richard Henderson wrote: > > We forgot to update cc_op before these branch insns, > > which lead to losing track of the current eflags. > > > > Buglink: https://bugs.launchpad.net/qemu/+bug/1888165 > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org > <mailto:richard.henderson@linaro.org>> > > --- > > target/i386/translate.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/target/i386/translate.c b/target/i386/translate.c > > index a1d31f09c1..caea6f5fb1 100644 > > --- a/target/i386/translate.c > > +++ b/target/i386/translate.c > > @@ -7148,6 +7148,7 @@ static target_ulong disas_insn(DisasContext *s, > CPUState *cpu) > > l1 = gen_new_label(); > > l2 = gen_new_label(); > > l3 = gen_new_label(); > > + gen_update_cc_op(s); > > b &= 3; > > switch(b) { > > case 0: /* loopnz */ > > >
diff --git a/target/i386/translate.c b/target/i386/translate.c index a1d31f09c1..caea6f5fb1 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -7148,6 +7148,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) l1 = gen_new_label(); l2 = gen_new_label(); l3 = gen_new_label(); + gen_update_cc_op(s); b &= 3; switch(b) { case 0: /* loopnz */
We forgot to update cc_op before these branch insns, which lead to losing track of the current eflags. Buglink: https://bugs.launchpad.net/qemu/+bug/1888165 Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- target/i386/translate.c | 1 + 1 file changed, 1 insertion(+) -- 2.25.1