Skip to content

Commit 74991e2

Browse files
committed
flush all test
1 parent 7132a01 commit 74991e2

File tree

1 file changed

+21
-27
lines changed

1 file changed

+21
-27
lines changed

cardengine/source/card_engine_header.s

Lines changed: 21 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
.global sdk_version
1515
.global fileCluster
1616

17+
#define ICACHE_SIZE 0x2000
18+
#define DCACHE_SIZE 0x1000
1719
#define CACHE_LINE_SIZE 32
1820

1921

@@ -215,41 +217,33 @@ cacheFlush:
215217
ldr r8,= 0x4000208
216218
ldr r11,[r8]
217219
mov r7, #0
218-
str r7, [r8]
220+
str r7, [r8]
219221
220-
add r10, R4, #4
221-
222222
//---------------------------------------------------------------------------------
223-
DC_FlushRange:
223+
IC_InvalidateAll:
224224
/*---------------------------------------------------------------------------------
225-
Clean and invalidate a range
225+
Clean and invalidate entire data cache
226226
---------------------------------------------------------------------------------*/
227-
add r1, r1, r0
228-
bic r0, r0, #(CACHE_LINE_SIZE - 1)
229-
.flush:
230-
mcr p15, 0, r7, c7, c10, 1 @ clean and flush address
231-
mcr p15, 0, r0, c7, c14, 1 @ clean and flush address
232-
add r0, r0, #CACHE_LINE_SIZE
233-
cmp r0, r1
234-
blt .flush
235-
236-
ldmia r10, {r0,r1}
237-
227+
mcr p15, 0, r7, c7, c5, 0
228+
238229
//---------------------------------------------------------------------------------
239-
IC_InvalidateRange:
230+
DC_FlushAll:
240231
/*---------------------------------------------------------------------------------
241-
Invalidate a range
232+
Clean and invalidate a range
242233
---------------------------------------------------------------------------------*/
243-
add r1, r1, r0
244-
bic r0, r0, #CACHE_LINE_SIZE - 1
245-
.invalidate:
246-
mcr p15, 0, r0, c7, c5, 1
234+
mov r1, #0
235+
outer_loop:
236+
mov r0, #0
237+
inner_loop:
238+
orr r2, r1, r0 @ generate segment and line address
239+
mcr p15, 0, r7, c7, c10, 4
240+
mcr p15, 0, r2, c7, c14, 2 @ clean and flush the line
247241
add r0, r0, #CACHE_LINE_SIZE
248-
cmp r0, r1
249-
blt .invalidate
250-
@ restore r0, r1
251-
252-
@ldmia r10, {r0,r1}
242+
cmp r0, #DCACHE_SIZE/4
243+
bne inner_loop
244+
add r1, r1, #0x40000000
245+
cmp r1, #0
246+
bne outer_loop
253247
254248
//---------------------------------------------------------------------------------
255249
DC_WaitWriteBufferEmpty:

0 commit comments

Comments
 (0)