[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCH 09/77] ppc: Fix do_rfi() for rfi emulation
From: |
Benjamin Herrenschmidt |
Subject: |
Re: [Qemu-ppc] [PATCH 09/77] ppc: Fix do_rfi() for rfi emulation |
Date: |
Fri, 20 Nov 2015 11:26:46 +1100 |
On Thu, 2015-11-19 at 21:23 +1100, Benjamin Herrenschmidt wrote:
>
> I only just discovered that rfi is actually gone from arch 2.07 :-)
>
> I'll dig a bit more tomorrow.
Ok, so I had a closer look and tore that stuff appart even more :-)
If you are curious, feel free to check out github. I've removed
the MSR mask completely, I can't figure out what it's supposed
to be about. I've quickly tested 64-bit powernv/pseries, 32-bit
userspace on 64-bit pseries kernel, and 32-bit Mac99 (ubuntu).
Cheers,
Ben.
> Cheers,
> Ben.
>
> >
> > >
> > > Signed-off-by: Benjamin Herrenschmidt <address@hidden>
> > > ---
> > > target-ppc/excp_helper.c | 4 ++--
> > > 1 file changed, 2 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/target-ppc/excp_helper.c b/target-ppc/excp_helper.c
> > > index c1d6605..00fae60 100644
> > > --- a/target-ppc/excp_helper.c
> > > +++ b/target-ppc/excp_helper.c
> > > @@ -878,13 +878,13 @@ static inline void do_rfi(CPUPPCState *env,
> > > target_ulong nip, target_ulong msr,
> > > CPUState *cs = CPU(ppc_env_get_cpu(env));
> > >
> > > #if defined(TARGET_PPC64)
> > > + msr = msr & msrm;
> > > if (msr_is_64bit(env, msr)) {
> > > nip = (uint64_t)nip;
> > > - msr &= (uint64_t)msrm;
> > > } else {
> > > nip = (uint32_t)nip;
> > > - msr = (uint32_t)(msr & msrm);
> > > if (keep_msrh) {
> > > + msr &= 0xffffffff;
> > > msr |= env->msr & ~((uint64_t)0xFFFFFFFF);
> > > }
> > > }
[Qemu-ppc] [PATCH 06/77] ppc: Add macros to register hypervisor mode SPRs, Benjamin Herrenschmidt, 2015/11/10
[Qemu-ppc] [PATCH 14/77] ppc: Change 'invalid' bit mask of tlbiel and tlbie, Benjamin Herrenschmidt, 2015/11/10