mirror of https://gitee.com/openkylin/linux.git
[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: Masato Noguchi <Masato.Noguchi@jp.sony.com> Signed-off-by: Jeremy Kerr <jk@ozlabs.org> Signed-off-by: Arnd Bergmann <arnd.bergmann@de.ibm.com>
This commit is contained in:
parent
1cfc0f86eb
commit
d40a01d4f4
|
@ -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)
|
||||
{
|
||||
struct spu_context *ctx = data;
|
||||
struct spu_lscsa *lscsa = ctx->csa.lscsa;
|
||||
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);
|
||||
}
|
||||
|
||||
static u64 __spufs_decr_status_get(void *data)
|
||||
{
|
||||
struct spu_context *ctx = data;
|
||||
struct spu_lscsa *lscsa = ctx->csa.lscsa;
|
||||
return lscsa->decr_status.slot[0];
|
||||
if (ctx->csa.priv2.mfc_control_RW & MFC_CNTL_DECREMENTER_RUNNING)
|
||||
return SPU_DECR_STATUS_RUNNING;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u64 spufs_decr_status_get(void *data)
|
||||
|
|
Loading…
Reference in New Issue