On Sat, Jun 25, 2016 at 09:55:13AM +0200, Thomas Huth wrote: > On 24.06.2016 04:27, David Gibson wrote: > > On Thu, Jun 23, 2016 at 03:35:17PM -0700, Aaron Larson wrote: > >> > >> ppce500_spin.c uses SPR_PIR to initialize the spin table, however on > >> Book E processors the correct SPR is SPR_BOOKE_PIR. > >> > >> Signed-off-by: Aaron Larson <[email protected]> > > > > Applied to ppc-for-2.7, thanks. > > > > IIRC this leaves a redundant bit in spin_init, but that can be cleaned > > up later. > > It's in spin_reset() ... and I'm not sure whether this value is needed > between reset and kick time, so maybe it's safer to just keep that line > in spin_reset()?
It shouldn't be. According to the spin table definition, the guest
isn't supposed to read the rest of the info in the table until after
it is kickced.
>
> >> ---
> >> hw/ppc/ppce500_spin.c | 2 +-
> >> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/hw/ppc/ppce500_spin.c b/hw/ppc/ppce500_spin.c
> >> index 76bd78b..225177b 100644
> >> --- a/hw/ppc/ppce500_spin.c
> >> +++ b/hw/ppc/ppce500_spin.c
> >> @@ -104,7 +104,7 @@ static void spin_kick(void *data)
> >> hwaddr map_start;
> >>
> >> cpu_synchronize_state(cpu);
> >> - stl_p(&curspin->pir, env->spr[SPR_PIR]);
> >> + stl_p(&curspin->pir, env->spr[SPR_BOOKE_PIR]);
> >> env->nip = ldq_p(&curspin->addr) & (map_size - 1);
> >> env->gpr[3] = ldq_p(&curspin->r3);
> >> env->gpr[4] = 0;
> >
>
>
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature
