annotate TaskManager/Cell/spe/CellDmaManager.cc @ 59:16f9f6251f49

*** empty log message ***
author gongo
date Sat, 16 Feb 2008 19:57:23 +0900
parents
children 6bc72fde6615
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
59
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
1 #include <spu_mfcio.h>
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
2 #include "CellDmaManager.h"
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
3
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
4 void
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
5 CellDmaManager::dma_load(void *buf, unsigned int addr, int size, int mask)
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
6 {
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
7 if (buf == NULL || (void*)addr == NULL) return;
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
8 spu_mfcdma32(buf, addr, ROUND_UP_ALIGN(size, DEFAULT_ALIGNMENT),
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
9 mask, MFC_GET_CMD);
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
10 }
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
11
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
12 void
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
13 CellDmaManager::dma_store(void *buf, unsigned int addr, int size, int mask)
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
14 {
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
15 if (buf == NULL || (void*)addr == NULL) return;
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
16 spu_mfcdma32(buf, addr, ROUND_UP_ALIGN(size, DEFAULT_ALIGNMENT),
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
17 mask, MFC_PUT_CMD);
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
18 }
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
19
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
20 /**
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
21 * mask で設定した DMA 転送の完了を待つ
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
22 */
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
23 void
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
24 CellDmaManager::dma_wait(int mask)
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
25 {
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
26 spu_writech(MFC_WrTagMask, 1 << mask);
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
27 spu_mfcstat(MFC_TAG_UPDATE_ALL);
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
28 }
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
29
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
30 void
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
31 CellDmaManager::mail_write(unsigned int data)
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
32 {
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
33 spu_writech(SPU_WrOutMbox, data);
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
34 }
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
35
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
36 unsigned int
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
37 CellDmaManager::mail_read(void)
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
38 {
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
39 return spu_readch(SPU_RdInMbox);
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
40 }