Commit d40a01d4 authored by Masato Noguchi's avatar Masato Noguchi Committed by Arnd Bergmann

[CELL] spufs: fix read and write for decr_status file

The decr_status in the LSCSA is valid only in the sequence of context
restore. Thus, it's nonsense to read and/or write it through spufs.

This patch changes decr_status node to access MFC_CNTL[Ds] in the CSA.
Signed-off-by: default avatarMasato Noguchi <Masato.Noguchi@jp.sony.com>
Signed-off-by: default avatarJeremy Kerr <jk@ozlabs.org>
Signed-off-by: default avatarArnd Bergmann <arnd.bergmann@de.ibm.com>
parent 1cfc0f86
...@@ -1651,17 +1651,21 @@ DEFINE_SIMPLE_ATTRIBUTE(spufs_decr_ops, spufs_decr_get, spufs_decr_set, ...@@ -1651,17 +1651,21 @@ DEFINE_SIMPLE_ATTRIBUTE(spufs_decr_ops, spufs_decr_get, spufs_decr_set,
static void spufs_decr_status_set(void *data, u64 val) static void spufs_decr_status_set(void *data, u64 val)
{ {
struct spu_context *ctx = data; struct spu_context *ctx = data;
struct spu_lscsa *lscsa = ctx->csa.lscsa;
spu_acquire_saved(ctx); spu_acquire_saved(ctx);
lscsa->decr_status.slot[0] = (u32) val; if (val)
ctx->csa.priv2.mfc_control_RW |= MFC_CNTL_DECREMENTER_RUNNING;
else
ctx->csa.priv2.mfc_control_RW &= ~MFC_CNTL_DECREMENTER_RUNNING;
spu_release_saved(ctx); spu_release_saved(ctx);
} }
static u64 __spufs_decr_status_get(void *data) static u64 __spufs_decr_status_get(void *data)
{ {
struct spu_context *ctx = data; struct spu_context *ctx = data;
struct spu_lscsa *lscsa = ctx->csa.lscsa; if (ctx->csa.priv2.mfc_control_RW & MFC_CNTL_DECREMENTER_RUNNING)
return lscsa->decr_status.slot[0]; return SPU_DECR_STATUS_RUNNING;
else
return 0;
} }
static u64 spufs_decr_status_get(void *data) static u64 spufs_decr_status_get(void *data)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment