source: trunk/softs/tests_ccvcache_v4/test_dma_basic/test.S@ 352

Last change on this file since 352 was 232, checked in by alain, 14 years ago

Introducing the elementary tests for a TSAR mono-cluster
mono-processor platform with MMU using the vci_cc_vcache_v4
such as the "tsarv4_mono_mmu".
(assemby level tests written by Manuel Bouyer)

File size: 1.9 KB
Line 
1/*
2 * basic DMA check: check that the DMA engine works and and doens't
3 * clobbers memory
4 */
5#include <registers.h>
6#include <misc.h>
7#include <vcache.h>
8 .text
9 .globl _start
10_start:
11 .set noreorder
12 la k0, TTY_BASE
13 la k1, EXIT_BASE
14
15 PRINT(mmustr_a)
16
17 /* reset cop0 status (keep BEV) */
18 lui a0, 0x0040;
19 mtc0 a0, COP0_STATUS
20
21 la t0, testval
22 lw a0, 0(t0);
23 PRINTX
24 PUTCHAR(' ')
25 la t0, testval2
26 lw a0, 0(t0);
27 PRINTX
28 PUTCHAR('\n')
29 la t0, testval
30 la t1, testval3
31 lw a0, 0(t0);
32 sw a0, 0(t1)
33
34 la a1, DMA_BASE
35 la a0, tstsrc
36 sw a0, DMA_SRC(a1)
37 la a0, tstdst
38 sw a0, DMA_DST(a1)
39 la a0, 0x18
40 sw a0, DMA_LEN(a1) /* start DMA */
41loop:
42 lw a0, DMA_LEN(a1)
43 bne a0, zero, loop;
44 nop
45 sw a0, DMA_RESET(a1) /* reset DMA */
46
47 la a0, testval2
48 sw a0, DMA_SRC(a1)
49 la a0, testval
50 sw a0, DMA_DST(a1)
51 la a0, 0x4
52 sw a0, DMA_LEN(a1) /* start DMA */
53loop2:
54 lw a0, DMA_LEN(a1)
55 bne a0, zero, loop2;
56 nop
57 sw a0, DMA_RESET(a1) /* reset DMA */
58
59 PRINT(mmustr_b)
60 la t0, testval
61 lw a0, 0(t0);
62 PRINTX
63 PUTCHAR(' ')
64 la t0, testval2
65 lw a0, 0(t0);
66 PRINTX
67 PUTCHAR(' ')
68 la t0, testval3
69 lw a0, 0(t0);
70 PRINTX
71 PUTCHAR(' ')
72 la t0, tstsrc
73 lw a0, 0(t0);
74 PRINTX
75 PUTCHAR(' ')
76 la t0, tstdst
77 lw a0, 0(t0);
78 PRINTX
79 PUTCHAR('\n')
80
81 /* we should get there */
82 EXIT(0)
83
84 .globl excep
85excep:
86 .set noreorder
87 PRINT(statusstr)
88 mfc0 a0, COP0_STATUS
89 PRINTX
90
91 PRINT(causestr)
92 mfc0 a0, COP0_CAUSE
93 PRINTX
94
95 PRINT(pcstr)
96 mfc0 a0, COP0_EXPC
97 PRINTX
98
99 PRINT(badvastr)
100 mfc0 a0, COP_0_BADVADDR
101 PRINTX
102
103 PUTCHAR('\n')
104 /* we should not get there */
105 EXIT(3)
106
107 .rodata:
108statusstr: .ascii "status \0"
109causestr: .ascii " cause \0"
110pcstr: .ascii " pc \0"
111badvastr: .ascii " badva \0"
112mmustr_a: .ascii "before DMA \0"
113mmustr_b: .ascii "after DMA \0"
114startstr: .ascii "start\n\0"
115
116 .org EXCEP_ADDRESS - BOOT_ADDRESS
117 .globl evect
118evect:
119 j excep
120 nop
121
122 .data
123testval:
124 .word MAGIC2
125testval2:
126 .word MAGIC4
127testval3:
128 .word MAGIC4
129tstdst:
130 .word 0
131 .org 0x1000
132 .word 0
133tstsrc:
134 .word MAGIC1
135
Note: See TracBrowser for help on using the repository browser.