From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50711) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZzZXg-0000gW-V3 for qemu-devel@nongnu.org; Thu, 19 Nov 2015 19:27:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZzZXb-0005DU-1e for qemu-devel@nongnu.org; Thu, 19 Nov 2015 19:27:08 -0500 Message-ID: <1447979206.11126.31.camel@kernel.crashing.org> From: Benjamin Herrenschmidt Date: Fri, 20 Nov 2015 11:26:46 +1100 In-Reply-To: <1447928638.3042.9.camel@kernel.crashing.org> References: <1447201710-10229-1-git-send-email-benh@kernel.crashing.org> <1447201710-10229-10-git-send-email-benh@kernel.crashing.org> <20151119061923.GC10667@voom.redhat.com> <1447928638.3042.9.camel@kernel.crashing.org> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [Qemu-ppc] [PATCH 09/77] ppc: Fix do_rfi() for rfi emulation List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: David Gibson Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org On Thu, 2015-11-19 at 21:23 +1100, Benjamin Herrenschmidt wrote: >=C2=A0 > I only just discovered that rfi is actually gone from arch 2.07 :-) >=20 > 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. >=20 > >=20 > > >=20 > > > Signed-off-by: Benjamin Herrenschmidt > > > --- > > > =C2=A0target-ppc/excp_helper.c | 4 ++-- > > > =C2=A01 file changed, 2 insertions(+), 2 deletions(-) > > >=20 > > > 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, > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0CPUState *cs =3D CPU(ppc_env_get_cpu(= env)); > > > =C2=A0 > > > =C2=A0#if defined(TARGET_PPC64) > > > +=C2=A0=C2=A0=C2=A0=C2=A0msr =3D msr & msrm; > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0if (msr_is_64bit(env, msr)) { > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0nip =3D (uint= 64_t)nip; > > > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0msr &=3D (uint64_t= )msrm; > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0} else { > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0nip =3D (uint= 32_t)nip; > > > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0msr =3D (uint32_t)= (msr & msrm); > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0if (keep_msrh= ) { > > > + =C2=A0=C2=A0=C2=A0=C2=A0msr &=3D 0xffffffff; > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0msr |=3D env->msr & ~((uint64_t)0xFFFFFFFF); > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0} > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0}