diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/powerpc/platforms/cell/spufs/run.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/arch/powerpc/platforms/cell/spufs/run.c b/arch/powerpc/platforms/cell/spufs/run.c index 7cf5b298fa13..b5e7bdee1bc2 100644 --- a/arch/powerpc/platforms/cell/spufs/run.c +++ b/arch/powerpc/platforms/cell/spufs/run.c | |||
@@ -234,17 +234,17 @@ int spu_process_callback(struct spu_context *ctx) | |||
234 | { | 234 | { |
235 | struct spu_syscall_block s; | 235 | struct spu_syscall_block s; |
236 | u32 ls_pointer, npc; | 236 | u32 ls_pointer, npc; |
237 | char *ls; | 237 | void __iomem *ls; |
238 | long spu_ret; | 238 | long spu_ret; |
239 | int ret; | 239 | int ret; |
240 | 240 | ||
241 | /* get syscall block from local store */ | 241 | /* get syscall block from local store */ |
242 | npc = ctx->ops->npc_read(ctx); | 242 | npc = ctx->ops->npc_read(ctx) & ~3; |
243 | ls = ctx->ops->get_ls(ctx); | 243 | ls = (void __iomem *)ctx->ops->get_ls(ctx); |
244 | ls_pointer = *(u32*)(ls + npc); | 244 | ls_pointer = in_be32(ls + npc); |
245 | if (ls_pointer > (LS_SIZE - sizeof(s))) | 245 | if (ls_pointer > (LS_SIZE - sizeof(s))) |
246 | return -EFAULT; | 246 | return -EFAULT; |
247 | memcpy(&s, ls + ls_pointer, sizeof (s)); | 247 | memcpy_fromio(&s, ls + ls_pointer, sizeof(s)); |
248 | 248 | ||
249 | /* do actual syscall without pinning the spu */ | 249 | /* do actual syscall without pinning the spu */ |
250 | ret = 0; | 250 | ret = 0; |
@@ -264,7 +264,7 @@ int spu_process_callback(struct spu_context *ctx) | |||
264 | } | 264 | } |
265 | 265 | ||
266 | /* write result, jump over indirect pointer */ | 266 | /* write result, jump over indirect pointer */ |
267 | memcpy(ls + ls_pointer, &spu_ret, sizeof (spu_ret)); | 267 | memcpy_toio(ls + ls_pointer, &spu_ret, sizeof(spu_ret)); |
268 | ctx->ops->npc_write(ctx, npc); | 268 | ctx->ops->npc_write(ctx, npc); |
269 | ctx->ops->runcntl_write(ctx, SPU_RUNCNTL_RUNNABLE); | 269 | ctx->ops->runcntl_write(ctx, SPU_RUNCNTL_RUNNABLE); |
270 | return ret; | 270 | return ret; |