annotate spe/Dma.cc @ 0:68a98d68d62a

commit
author yutaka@localhost.localdomain
date Sun, 28 Mar 2010 19:47:00 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
yutaka@localhost.localdomain
parents:
diff changeset
1 #include <stdio.h>
yutaka@localhost.localdomain
parents:
diff changeset
2 #include <malloc.h>
yutaka@localhost.localdomain
parents:
diff changeset
3 #include <spu_intrinsics.h>
yutaka@localhost.localdomain
parents:
diff changeset
4 #include <spu_mfcio.h>
yutaka@localhost.localdomain
parents:
diff changeset
5 #include "Dma.h"
yutaka@localhost.localdomain
parents:
diff changeset
6
yutaka@localhost.localdomain
parents:
diff changeset
7 void
yutaka@localhost.localdomain
parents:
diff changeset
8 dma_get(void *buf, unsigned int addr, int size, int tag)
yutaka@localhost.localdomain
parents:
diff changeset
9 {
yutaka@localhost.localdomain
parents:
diff changeset
10
yutaka@localhost.localdomain
parents:
diff changeset
11 //printf("dma get sie %d\n",size);
yutaka@localhost.localdomain
parents:
diff changeset
12 mfc_get(buf, addr, size, tag, 0, 0);
yutaka@localhost.localdomain
parents:
diff changeset
13
yutaka@localhost.localdomain
parents:
diff changeset
14 }
yutaka@localhost.localdomain
parents:
diff changeset
15
yutaka@localhost.localdomain
parents:
diff changeset
16 void
yutaka@localhost.localdomain
parents:
diff changeset
17 dma_put(void *buf, unsigned int addr, int size, int tag)
yutaka@localhost.localdomain
parents:
diff changeset
18 {
yutaka@localhost.localdomain
parents:
diff changeset
19
yutaka@localhost.localdomain
parents:
diff changeset
20 mfc_put(buf, addr, size, tag, 0, 0);
yutaka@localhost.localdomain
parents:
diff changeset
21
yutaka@localhost.localdomain
parents:
diff changeset
22 }
yutaka@localhost.localdomain
parents:
diff changeset
23
yutaka@localhost.localdomain
parents:
diff changeset
24 int
yutaka@localhost.localdomain
parents:
diff changeset
25 dma_wait(int tag)
yutaka@localhost.localdomain
parents:
diff changeset
26 {
yutaka@localhost.localdomain
parents:
diff changeset
27
yutaka@localhost.localdomain
parents:
diff changeset
28 int dma_wait_time;
yutaka@localhost.localdomain
parents:
diff changeset
29
yutaka@localhost.localdomain
parents:
diff changeset
30 spu_writech(MFC_WrTagMask, 1 << tag);
yutaka@localhost.localdomain
parents:
diff changeset
31
yutaka@localhost.localdomain
parents:
diff changeset
32 spu_write_decrementer(0xFFFFFFFF);
yutaka@localhost.localdomain
parents:
diff changeset
33 dma_wait_time = spu_read_decrementer();
yutaka@localhost.localdomain
parents:
diff changeset
34
yutaka@localhost.localdomain
parents:
diff changeset
35 spu_mfcstat(MFC_TAG_UPDATE_ALL);
yutaka@localhost.localdomain
parents:
diff changeset
36
yutaka@localhost.localdomain
parents:
diff changeset
37 dma_wait_time = dma_wait_time - spu_read_decrementer();
yutaka@localhost.localdomain
parents:
diff changeset
38
yutaka@localhost.localdomain
parents:
diff changeset
39 return dma_wait_time;
yutaka@localhost.localdomain
parents:
diff changeset
40
yutaka@localhost.localdomain
parents:
diff changeset
41 }
yutaka@localhost.localdomain
parents:
diff changeset
42
yutaka@localhost.localdomain
parents:
diff changeset
43 int
yutaka@localhost.localdomain
parents:
diff changeset
44 dma_stat(int tag)
yutaka@localhost.localdomain
parents:
diff changeset
45 {
yutaka@localhost.localdomain
parents:
diff changeset
46
yutaka@localhost.localdomain
parents:
diff changeset
47 spu_writech(MFC_WrTagMask, 1 << tag);
yutaka@localhost.localdomain
parents:
diff changeset
48 return spu_mfcstat(MFC_TAG_UPDATE_IMMEDIATE);
yutaka@localhost.localdomain
parents:
diff changeset
49
yutaka@localhost.localdomain
parents:
diff changeset
50 }
yutaka@localhost.localdomain
parents:
diff changeset
51
yutaka@localhost.localdomain
parents:
diff changeset
52