Skip to content

Commit 4ef41bd

Browse files
committed
Added testcase
1 parent 2ffdc38 commit 4ef41bd

File tree

1 file changed

+161
-0
lines changed

1 file changed

+161
-0
lines changed

DCache/flype-dcache-test-3.asm

+161
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
;==========================================================
2+
; ASM Testcase
3+
; flype, 2015-10-05, v1.0
4+
;==========================================================
5+
; https://github.com/flype44/M68K/blob/master/DCache/dcache-test-3.asm
6+
;==========================================================
7+
8+
assert_zero equ $00D0000C
9+
10+
COUNT EQU 255 ; <<<< Modify it (bytes count in array)
11+
SPACER EQU $8000 ; <<<< Modify it (32K for ex)
12+
13+
;==========================================================
14+
15+
; DC.L 0
16+
; DC.L Main
17+
section .fastram
18+
19+
;==========================================================
20+
; MAIN
21+
;==========================================================
22+
23+
Main:
24+
jsr ArrayLoad ; Load buffers
25+
jsr ArrayInit ; Init buffers
26+
jsr ArrayFill ; Fill buffers
27+
jsr SelfTest ; Check buffers
28+
MainExit:
29+
tst $0 ; Flush pipelines
30+
stop #-1 ; Stop sim
31+
32+
;==========================================================
33+
; Routines
34+
;==========================================================
35+
36+
section .chipram
37+
38+
ArrayLoad:
39+
lea BUFFER0,a0 ;
40+
lea BUFFER1,a1 ;
41+
lea BUFFER2,a2 ;
42+
lea BUFFER3,a3 ;
43+
lea BUFFER4,a4 ;
44+
lea BUFFER5,a5 ;
45+
lea BUFFER6,a6 ;
46+
rts
47+
48+
;==========================================================
49+
50+
ArrayInit:
51+
move.b #0,(a0)+ ; 1rst value in a0
52+
move.b #(COUNT-1),(a1)+ ; 1rst value in a1
53+
move.w #0,(a2)+ ; 1rst value in a2
54+
move.w #(COUNT-1),(a3)+ ; 1rst value in a3
55+
move.l #0,(a4)+ ; 1rst value in a4
56+
move.l #(COUNT-1),(a5)+ ; 1rst value in a5
57+
move.l #(COUNT-1),(a6)+ ; 1rst value in a6
58+
rts
59+
60+
;==========================================================
61+
62+
section .fastram
63+
64+
ArrayFill:
65+
tst.b -1(a1) ; last value in a6 array ?
66+
beq ArrayFillExit ; then exit
67+
move.b -1(a0),(a0)+ ; 0,1,2,3...(COUNT-1)
68+
move.b -1(a1),(a1)+ ; (COUNT-1)..3,2,1,0
69+
move.w -2(a2),(a2)+ ; 0,1,2,3...(COUNT-1)
70+
move.w -2(a3),(a3)+ ; (COUNT-1)..3,2,1,0
71+
move.l -4(a4),(a4)+ ; 0,1,2,3...(COUNT-1)
72+
move.l -4(a5),(a5)+ ; (COUNT-1)..3,2,1,0
73+
move.l -4(a6),(a6)+ ; (COUNT-1)..3,2,1,0
74+
addi.b #1,-1(a0) ; increment value in a0
75+
subi.b #1,-1(a1) ; decrement value in a1
76+
addi.w #1,-2(a2) ; increment value in a2
77+
subi.w #1,-2(a3) ; decrement value in a3
78+
addi.l #1,-4(a4) ; increment value in a4
79+
subi.l #1,-4(a5) ; decrement value in a5
80+
subi.l #1,-4(a6) ; decrement value in a6
81+
bra ArrayFill ; continue
82+
ArrayFillExit:
83+
rts
84+
85+
;==========================================================
86+
87+
SelfTest:
88+
jsr ArrayLoad ; Load buffers
89+
adda.l #(COUNT*1),a1 ; Mem block + Size
90+
adda.l #(COUNT*2),a3 ; Mem block + Size
91+
adda.l #(COUNT*4),a5 ; Mem block + Size
92+
adda.l #(COUNT*4),a6 ; Mem block + Size
93+
move.l #(COUNT-1),d0 ; Loop counter
94+
SelfTestLoop:
95+
move.l #$FF,d1 ; Assert register != 0
96+
move.b -(a1),d1 ; store a1 in d1 and decrement a1
97+
sub.b (a0)+,d1 ; d1 should be 0
98+
move.l d1,assert_zero ; assert 0
99+
move.l #$FFFF,d1 ; Assert register != 0
100+
move.w -(a3),d1 ; store a3 in d1 and decrement a3
101+
sub.w (a2)+,d1 ; d1 should be 0
102+
move.l d1,assert_zero ; assert 0
103+
move.l #$FFFFFFFF,d1 ; Assert register != 0
104+
move.l -(a5),d1 ; store a5 in d1 and decrement a5
105+
sub.l (a4)+,d1 ; d1 should be 0
106+
move.l d1,assert_zero ; assert 0
107+
dbra d0,SelfTestLoop ; continue
108+
rts
109+
110+
;==========================================================
111+
; DATA SECTION
112+
;==========================================================
113+
114+
section .chipram
115+
116+
BUFFER0:
117+
ds.b COUNT
118+
ds.b SPACER
119+
even
120+
121+
BUFFER1:
122+
ds.b COUNT
123+
ds.b SPACER
124+
even
125+
126+
section .fastram
127+
128+
BUFFER2:
129+
ds.w COUNT
130+
ds.b SPACER
131+
even
132+
133+
BUFFER3:
134+
ds.w COUNT
135+
ds.b SPACER
136+
even
137+
138+
BUFFER4:
139+
ds.l COUNT
140+
ds.b SPACER
141+
even
142+
143+
section .chipram
144+
145+
BUFFER5:
146+
ds.l COUNT
147+
ds.b SPACER
148+
even
149+
150+
section .fastram
151+
152+
BUFFER6:
153+
ds.l COUNT
154+
ds.b SPACER
155+
even
156+
157+
;==========================================================
158+
159+
END
160+
161+
;==========================================================

0 commit comments

Comments
 (0)