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