armv7-a/r:cp15_invalidate_dcache_all: fix Sets mask error.
As NumSets field is bits 13-27, use 0x7fff instead. And add way to get from CCSIDR.
This commit is contained in:
parent
0c28fe9831
commit
4d5c2586a9
|
@ -92,9 +92,12 @@
|
||||||
cp15_invalidate_dcache_all:
|
cp15_invalidate_dcache_all:
|
||||||
|
|
||||||
mrc CP15_CCSIDR(r0) /* Read the Cache Size Identification Register */
|
mrc CP15_CCSIDR(r0) /* Read the Cache Size Identification Register */
|
||||||
ldr r3, =0xffff /* Isolate the NumSets field (bits 13-27) */
|
ldr r3, =0x7fff /* Isolate the NumSets field (bits 13-27) */
|
||||||
and r0, r3, r0, lsr #13 /* r0=NumSets (number of sets - 1) */
|
and r0, r3, r0, lsr #13 /* r0=NumSets (number of sets - 1) */
|
||||||
|
|
||||||
|
ldr r3, =0x3ff /* Isolate the way field (bits 3-12) */
|
||||||
|
add r4, r3, r0, lsr #3 /* r4=(number of ways - 1) */
|
||||||
|
|
||||||
mov r1, #0 /* r1 = way loop counter */
|
mov r1, #0 /* r1 = way loop counter */
|
||||||
way_loop:
|
way_loop:
|
||||||
|
|
||||||
|
@ -108,7 +111,7 @@ set_loop:
|
||||||
bne set_loop /* Keep looping if not */
|
bne set_loop /* Keep looping if not */
|
||||||
|
|
||||||
add r1, r1, #1 /* Increment the way counter */
|
add r1, r1, #1 /* Increment the way counter */
|
||||||
cmp r1, #4 /* Last way? (four ways assumed) */
|
cmp r4, r1 /* Last way? */
|
||||||
bne way_loop /* Keep looping if not */
|
bne way_loop /* Keep looping if not */
|
||||||
|
|
||||||
dsb
|
dsb
|
||||||
|
|
|
@ -92,9 +92,12 @@
|
||||||
cp15_invalidate_dcache_all:
|
cp15_invalidate_dcache_all:
|
||||||
|
|
||||||
mrc CP15_CCSIDR(r0) /* Read the Cache Size Identification Register */
|
mrc CP15_CCSIDR(r0) /* Read the Cache Size Identification Register */
|
||||||
ldr r3, =0xffff /* Isolate the NumSets field (bits 13-27) */
|
ldr r3, =0x7fff /* Isolate the NumSets field (bits 13-27) */
|
||||||
and r0, r3, r0, lsr #13 /* r0=NumSets (number of sets - 1) */
|
and r0, r3, r0, lsr #13 /* r0=NumSets (number of sets - 1) */
|
||||||
|
|
||||||
|
ldr r3, =0x3ff /* Isolate the way field (bits 3-12) */
|
||||||
|
add r4, r3, r0, lsr #3 /* r4=(number of ways - 1) */
|
||||||
|
|
||||||
mov r1, #0 /* r1 = way loop counter */
|
mov r1, #0 /* r1 = way loop counter */
|
||||||
way_loop:
|
way_loop:
|
||||||
|
|
||||||
|
@ -108,7 +111,7 @@ set_loop:
|
||||||
bne set_loop /* Keep looping if not */
|
bne set_loop /* Keep looping if not */
|
||||||
|
|
||||||
add r1, r1, #1 /* Increment the way counter */
|
add r1, r1, #1 /* Increment the way counter */
|
||||||
cmp r1, #4 /* Last way? (four ways assumed) */
|
cmp r4, r1 /* Last way? (four ways assumed) */
|
||||||
bne way_loop /* Keep looping if not */
|
bne way_loop /* Keep looping if not */
|
||||||
|
|
||||||
dsb
|
dsb
|
||||||
|
|
Loading…
Reference in New Issue