annotate TaskManager/Fifo/FifoDmaManager.cc @ 720:dac59b74e02a

Cell fix
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 19 Dec 2009 10:43:19 +0900
parents 7c9ded1ea750
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
1 #include <stdio.h>
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
2 #include <stdlib.h>
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
3 #include <string.h>
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
4 #include "FifoDmaManager.h"
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
5
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
6 void
603
42c94f85c779 long -> memaddr (64 or 32)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 602
diff changeset
7 FifoDmaManager::dma_load(void *buf, memaddr addr, uint32 size, uint32 mask)
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
8 {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
9 if (size == 0) return;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
10 memcpy(buf, (void*)addr, size);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
11 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
12
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
13 void
603
42c94f85c779 long -> memaddr (64 or 32)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 602
diff changeset
14 FifoDmaManager::dma_store(void *buf, memaddr addr, uint32 size, uint32 mask)
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
15 {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
16 if (size == 0) return;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
17 memcpy((void*)addr, buf, size);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
18 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
19
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
20 /**
321
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
21 * mask で設定した DMA 転送の完了を待つ
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
22 */
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
23 void
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
24 FifoDmaManager::dma_wait(uint32 mask)
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
25 {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
26 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
27
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
28
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
29 void
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
30 FifoDmaManager::dma_loadList(ListDataPtr list, void *buff, uint32 mask)
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
31 {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
32 int list_size = list->length;
602
1733f3cbfa28 64bit mode try... not worked.
e075740@nw0740.st.ie.u-ryukyu.ac.jp
parents: 321
diff changeset
33 long bound;
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
34
602
1733f3cbfa28 64bit mode try... not worked.
e075740@nw0740.st.ie.u-ryukyu.ac.jp
parents: 321
diff changeset
35 bound = (long)(buff);
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
36
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
37 for (int i = 0; i < list_size; i++) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
38 ListElementPtr elm = &list->element[i];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
39 memcpy((void*)bound, (void*)elm->addr, elm->size);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
40 bound += elm->size;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
41 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
42 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
43
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
44
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
45 void
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
46 FifoDmaManager::dma_storeList(ListDataPtr list, void *buff, uint32 mask)
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
47 {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
48 int list_size = list->length;
603
42c94f85c779 long -> memaddr (64 or 32)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 602
diff changeset
49 memaddr bound;
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
50
603
42c94f85c779 long -> memaddr (64 or 32)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 602
diff changeset
51 bound = (memaddr)(buff);
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
52
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
53 for (int i = 0; i < list_size; i++) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
54 ListElementPtr elm = &list->element[i];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
55 memcpy((void*)elm->addr, (void*)bound, elm->size);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
56 bound += elm->size;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
57 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
58 }
643
bffdede05f1e minor fix.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 640
diff changeset
59
bffdede05f1e minor fix.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 640
diff changeset
60 /* end */