0
|
1 #include <stdio.h>
|
|
2 #include <malloc.h>
|
|
3 #include <spu_intrinsics.h>
|
|
4 #include <spu_mfcio.h>
|
|
5 #include "Dma.h"
|
|
6
|
|
7 void
|
|
8 dma_get(void *buf, unsigned int addr, int size, int tag)
|
|
9 {
|
|
10
|
|
11 //printf("dma get sie %d\n",size);
|
|
12 mfc_get(buf, addr, size, tag, 0, 0);
|
|
13
|
|
14 }
|
|
15
|
|
16 void
|
|
17 dma_put(void *buf, unsigned int addr, int size, int tag)
|
|
18 {
|
|
19
|
|
20 mfc_put(buf, addr, size, tag, 0, 0);
|
|
21
|
|
22 }
|
|
23
|
|
24 int
|
|
25 dma_wait(int tag)
|
|
26 {
|
|
27
|
|
28 int dma_wait_time;
|
|
29
|
|
30 spu_writech(MFC_WrTagMask, 1 << tag);
|
|
31
|
|
32 spu_write_decrementer(0xFFFFFFFF);
|
|
33 dma_wait_time = spu_read_decrementer();
|
|
34
|
|
35 spu_mfcstat(MFC_TAG_UPDATE_ALL);
|
|
36
|
|
37 dma_wait_time = dma_wait_time - spu_read_decrementer();
|
|
38
|
|
39 return dma_wait_time;
|
|
40
|
|
41 }
|
|
42
|
|
43 int
|
|
44 dma_stat(int tag)
|
|
45 {
|
|
46
|
|
47 spu_writech(MFC_WrTagMask, 1 << tag);
|
|
48 return spu_mfcstat(MFC_TAG_UPDATE_IMMEDIATE);
|
|
49
|
|
50 }
|
|
51
|
|
52
|