mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-22 19:42:40 -05:00
mmu-arm (v4/v5) : use one less instruction in invalidate_dcache/clean_dcache
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25625 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
88148f39f6
commit
a0e1e329f7
1 changed files with 11 additions and 13 deletions
|
|
@ -275,10 +275,10 @@ clean_dcache_range:
|
|||
clean_dcache:
|
||||
cpucache_flush:
|
||||
@ Index format: 31:26 = index, 7:5 = segment, remainder = SBZ
|
||||
mov r0, #0x00000000 @
|
||||
mov r1, #0x00000000 @
|
||||
1: @ clean_start @
|
||||
mcr p15, 0, r0, c7, c10, 2 @ Clean entry by index
|
||||
add r0, r0, #0x00000020 @
|
||||
add r0, r1, #0x00000020 @
|
||||
mcr p15, 0, r0, c7, c10, 2 @ Clean entry by index
|
||||
add r0, r0, #0x00000020 @
|
||||
mcr p15, 0, r0, c7, c10, 2 @ Clean entry by index
|
||||
|
|
@ -292,10 +292,9 @@ cpucache_flush:
|
|||
mcr p15, 0, r0, c7, c10, 2 @ Clean entry by index
|
||||
add r0, r0, #0x00000020 @
|
||||
mcr p15, 0, r0, c7, c10, 2 @ Clean entry by index
|
||||
sub r0, r0, #0x000000e0 @
|
||||
adds r0, r0, #0x04000000 @ will wrap to zero at loop end
|
||||
adds r1, r1, #0x04000000 @ will wrap to zero at loop end
|
||||
bne 1b @ clean_start @
|
||||
mcr p15, 0, r0, c7, c10, 4 @ Drain write buffer
|
||||
mcr p15, 0, r1, c7, c10, 4 @ Drain write buffer
|
||||
bx lr @
|
||||
.size clean_dcache, .-clean_dcache
|
||||
|
||||
|
|
@ -310,10 +309,10 @@ cpucache_flush:
|
|||
.type invalidate_dcache, %function
|
||||
invalidate_dcache:
|
||||
@ Index format: 31:26 = index, 7:5 = segment, remainder = SBZ
|
||||
mov r0, #0x00000000 @
|
||||
mov r1, #0x00000000 @
|
||||
1: @ inv_start @
|
||||
mcr p15, 0, r0, c7, c14, 2 @ Clean and invalidate entry by index
|
||||
add r0, r0, #0x00000020 @
|
||||
add r0, r1, #0x00000020 @
|
||||
mcr p15, 0, r0, c7, c14, 2 @ Clean and invalidate entry by index
|
||||
add r0, r0, #0x00000020 @
|
||||
mcr p15, 0, r0, c7, c14, 2 @ Clean and invalidate entry by index
|
||||
|
|
@ -327,10 +326,9 @@ invalidate_dcache:
|
|||
mcr p15, 0, r0, c7, c14, 2 @ Clean and invalidate entry by index
|
||||
add r0, r0, #0x00000020 @
|
||||
mcr p15, 0, r0, c7, c14, 2 @ Clean and invalidate entry by index
|
||||
sub r0, r0, #0x000000e0 @
|
||||
adds r0, r0, #0x04000000 @ will wrap to zero at loop end
|
||||
adds r1, r1, #0x04000000 @ will wrap to zero at loop end
|
||||
bne 1b @ inv_start @
|
||||
mcr p15, 0, r0, c7, c10, 4 @ Drain write buffer
|
||||
mcr p15, 0, r1, c7, c10, 4 @ Drain write buffer
|
||||
bx lr @
|
||||
.size invalidate_dcache, .-invalidate_dcache
|
||||
|
||||
|
|
@ -346,8 +344,8 @@ invalidate_dcache:
|
|||
.global cpucache_invalidate @ Alias
|
||||
invalidate_idcache:
|
||||
cpucache_invalidate:
|
||||
mov r1, lr @ save lr to r1, call uses r0 only
|
||||
mov r2, lr @ save lr to r1, call uses r0 only
|
||||
bl invalidate_dcache @ Clean and invalidate entire DCache
|
||||
mcr p15, 0, r0, c7, c5, 0 @ Invalidate ICache (r0=0 from call)
|
||||
mov pc, r1 @
|
||||
mcr p15, 0, r1, c7, c5, 0 @ Invalidate ICache (r1=0 from call)
|
||||
mov pc, r2 @
|
||||
.size invalidate_idcache, .-invalidate_idcache
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue