aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/powerpc/platforms/cell/spufs/switch.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/powerpc/platforms/cell/spufs/switch.c b/arch/powerpc/platforms/cell/spufs/switch.c
index 65b423b6da48..4131784216bb 100644
--- a/arch/powerpc/platforms/cell/spufs/switch.c
+++ b/arch/powerpc/platforms/cell/spufs/switch.c
@@ -186,20 +186,21 @@ static inline void save_mfc_cntl(struct spu_state *csa, struct spu *spu)
186 MFC_CNTL_SUSPEND_COMPLETE); 186 MFC_CNTL_SUSPEND_COMPLETE);
187 /* fall through */ 187 /* fall through */
188 case MFC_CNTL_SUSPEND_COMPLETE: 188 case MFC_CNTL_SUSPEND_COMPLETE:
189 if (csa) { 189 if (csa)
190 csa->priv2.mfc_control_RW = 190 csa->priv2.mfc_control_RW =
191 MFC_CNTL_SUSPEND_MASK | 191 in_be64(&priv2->mfc_control_RW) |
192 MFC_CNTL_SUSPEND_DMA_QUEUE; 192 MFC_CNTL_SUSPEND_DMA_QUEUE;
193 }
194 break; 193 break;
195 case MFC_CNTL_NORMAL_DMA_QUEUE_OPERATION: 194 case MFC_CNTL_NORMAL_DMA_QUEUE_OPERATION:
196 out_be64(&priv2->mfc_control_RW, MFC_CNTL_SUSPEND_DMA_QUEUE); 195 out_be64(&priv2->mfc_control_RW, MFC_CNTL_SUSPEND_DMA_QUEUE);
197 POLL_WHILE_FALSE((in_be64(&priv2->mfc_control_RW) & 196 POLL_WHILE_FALSE((in_be64(&priv2->mfc_control_RW) &
198 MFC_CNTL_SUSPEND_DMA_STATUS_MASK) == 197 MFC_CNTL_SUSPEND_DMA_STATUS_MASK) ==
199 MFC_CNTL_SUSPEND_COMPLETE); 198 MFC_CNTL_SUSPEND_COMPLETE);
200 if (csa) { 199 if (csa)
201 csa->priv2.mfc_control_RW = 0; 200 csa->priv2.mfc_control_RW =
202 } 201 in_be64(&priv2->mfc_control_RW) &
202 ~MFC_CNTL_SUSPEND_DMA_QUEUE &
203 ~MFC_CNTL_SUSPEND_MASK;
203 break; 204 break;
204 } 205 }
205} 206}