diff options
-rw-r--r-- | arch/powerpc/platforms/cell/spu_base.c | 4 |
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 | ||