annotate TaskManager/Cell/spe/CellDmaManager.cc @ 61:6bc72fde6615

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