aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/powerpc/platforms/cell/spu_base.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/cell/spu_base.c b/arch/powerpc/platforms/cell/spu_base.c
index 87eb07f94c5f..cfc28e93c825 100644
--- a/arch/powerpc/platforms/cell/spu_base.c
+++ b/arch/powerpc/platforms/cell/spu_base.c
@@ -148,7 +148,11 @@ static inline void spu_load_slb(struct spu *spu, int slbe, struct spu_slb *slb)
148 __func__, slbe, slb->vsid, slb->esid); 148 __func__, slbe, slb->vsid, slb->esid);
149 149
150 out_be64(&priv2->slb_index_W, slbe); 150 out_be64(&priv2->slb_index_W, slbe);
151 /* set invalid before writing vsid */
152 out_be64(&priv2->slb_esid_RW, 0);
153 /* now it's safe to write the vsid */
151 out_be64(&priv2->slb_vsid_RW, slb->vsid); 154 out_be64(&priv2->slb_vsid_RW, slb->vsid);
155 /* setting the new esid makes the entry valid again */
152 out_be64(&priv2->slb_esid_RW, slb->esid); 156 out_be64(&priv2->slb_esid_RW, slb->esid);
153} 157}
154 158