On Thu, 2015-11-19 at 17:26 +1100, David Gibson wrote:
> On Wed, Nov 11, 2015 at 11:27:28AM +1100, Benjamin Herrenschmidt
> wrote:
> > From: Michael Neuling <mi...@neuling.org>
> > 
> > Signed-off-by: Michael Neuling <mi...@neuling.org>
> > Signed-off-by: Benjamin Herrenschmidt <b...@kernel.crashing.org>
> 
> Reviewed-by: David Gibson <da...@gibson.dropbear.id.au>
> 
> Looks correct, though my memory of C promotion rules is obviously a
> bit stale, since I'm not immediately seeing why the original was
> wrong.

Well, at least it makes things work :-)

> > ---
> >  target-ppc/translate.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/target-ppc/translate.c b/target-ppc/translate.c
> > index bd5df40..3974cd2 100644
> > --- a/target-ppc/translate.c
> > +++ b/target-ppc/translate.c
> > @@ -4391,7 +4391,7 @@ static void gen_mtmsrd(DisasContext *ctx)
> >          /* Special form that does not need any synchronisation */
> >          TCGv t0 = tcg_temp_new();
> >          tcg_gen_andi_tl(t0, cpu_gpr[rS(ctx->opcode)], (1 <<
> > MSR_RI) | (1 << MSR_EE));
> > -        tcg_gen_andi_tl(cpu_msr, cpu_msr, ~((1 << MSR_RI) | (1 <<
> > MSR_EE)));
> > +        tcg_gen_andi_tl(cpu_msr, cpu_msr, ~(target_ulong)((1 <<
> > MSR_RI) | (1 << MSR_EE)));
> >          tcg_gen_or_tl(cpu_msr, cpu_msr, t0);
> >          tcg_temp_free(t0);
> >      } else {
> > @@ -4422,7 +4422,7 @@ static void gen_mtmsr(DisasContext *ctx)
> >          /* Special form that does not need any synchronisation */
> >          TCGv t0 = tcg_temp_new();
> >          tcg_gen_andi_tl(t0, cpu_gpr[rS(ctx->opcode)], (1 <<
> > MSR_RI) | (1 << MSR_EE));
> > -        tcg_gen_andi_tl(cpu_msr, cpu_msr, ~((1 << MSR_RI) | (1 <<
> > MSR_EE)));
> > +        tcg_gen_andi_tl(cpu_msr, cpu_msr, ~(target_ulong)((1 <<
> > MSR_RI) | (1 << MSR_EE)));
> >          tcg_gen_or_tl(cpu_msr, cpu_msr, t0);
> >          tcg_temp_free(t0);
> >      } else {
> 

Reply via email to