annotate TaskManager/Fifo/FifoDmaManager.cc @ 3:2356238ebea7

*** empty log message ***
author gongo
date Tue, 05 Feb 2008 20:22:50 +0900
parents
children 41ccd4b38184 001583879ac3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
1 #include <stdio.h>
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
2 #include <string.h>
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
3 #include "FifoDmaManager.h"
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
4
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
5 void
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
6 FifoDmaManager::dma_load(void *buf, unsigned int addr, int size, int mask)
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
7 {
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
8 memcpy(buf, (void*)addr, size);
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
9 }
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
10
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
11 void
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
12 FifoDmaManager::dma_store(void *buf, unsigned int addr, int size, int mask)
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
13 {
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
14 memcpy((void*)addr, buf, size);
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
15 }
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
16
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
17 /**
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
18 * mask で設定した DMA 転送の完了を待つ
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
19 */
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
20 void
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
21 FifoDmaManager::dma_wait(int mask)
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
22 {
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
23 //spu_writech(MFC_WrTagMask, 1 << mask);
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
24 //spu_mfcstat(MFC_TAG_UPDATE_ALL);
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
25 }
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
26
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
27 void
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
28 FifoDmaManager::mail_write(unsigned int data)
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
29 {
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
30 //spu_writech(SPU_WrOutMbox, data);
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
31
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
32 mail_sendQueue = append_mailQueue(mail_sendQueue,
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
33 mailManager->create_mail(data));
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
34 }
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
35
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
36 unsigned int
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
37 FifoDmaManager::mail_read(void)
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
38 {
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
39 MailQueuePtr q;
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
40 unsigned int ret;
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
41
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
42 q = mail_recvQueue;
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
43
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
44 if (q == NULL) {
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
45 return 0; // error か 正しい値か判断できないな・・・
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
46 }
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
47
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
48 mail_recvQueue = mail_recvQueue->next;
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
49
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
50 ret = q->data;
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
51 mailManager->free_mailQueue(q);
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
52
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
53 return ret;
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
54 }