diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2015-04-03 06:21:42 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2015-04-14 17:26:52 -0400 |
commit | cd8b24d9e852b53e68c69a086358c81423dfb8d1 (patch) | |
tree | 9393ff2f7d6bd650f802ff5408b5facdc3b5bc86 /arch/arm/mm | |
parent | 47b8484ea6569511a3cd915bea29886b4cd08333 (diff) |
ARM: cache-v7: consolidate initialisation of cache level index
Both v7_flush_cache_louis and v7_flush_dcache_all both begin the
flush_levels loop with r10 initialised to zero. In each case, this
is done immediately prior to entering the loop. Branch to this
instruction in v7_flush_dcache_all from v7_flush_cache_louis and
eliminate the unnecessary initialisation in v7_flush_cache_louis.
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mm')
-rw-r--r-- | arch/arm/mm/cache-v7.S | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/arm/mm/cache-v7.S b/arch/arm/mm/cache-v7.S index d062f8cbb886..5b5d0c00bca7 100644 --- a/arch/arm/mm/cache-v7.S +++ b/arch/arm/mm/cache-v7.S | |||
@@ -103,8 +103,7 @@ ALT_UP( mov r3, r0, lsr #26) @ move LoUU into position | |||
103 | moveqs r3, #1 << 1 @ fix LoUIS value (and set flags state to 'ne') | 103 | moveqs r3, #1 << 1 @ fix LoUIS value (and set flags state to 'ne') |
104 | #endif | 104 | #endif |
105 | reteq lr @ return if level == 0 | 105 | reteq lr @ return if level == 0 |
106 | mov r10, #0 @ r10 (starting level) = 0 | 106 | b start_flush_levels @ start flushing cache levels |
107 | b flush_levels @ start flushing cache levels | ||
108 | ENDPROC(v7_flush_dcache_louis) | 107 | ENDPROC(v7_flush_dcache_louis) |
109 | 108 | ||
110 | /* | 109 | /* |
@@ -122,6 +121,7 @@ ENTRY(v7_flush_dcache_all) | |||
122 | mov r3, r0, lsr #23 @ move LoC into position | 121 | mov r3, r0, lsr #23 @ move LoC into position |
123 | ands r3, r3, #7 << 1 @ extract LoC*2 from clidr | 122 | ands r3, r3, #7 << 1 @ extract LoC*2 from clidr |
124 | beq finished @ if loc is 0, then no need to clean | 123 | beq finished @ if loc is 0, then no need to clean |
124 | start_flush_levels: | ||
125 | mov r10, #0 @ start clean at cache level 0 | 125 | mov r10, #0 @ start clean at cache level 0 |
126 | flush_levels: | 126 | flush_levels: |
127 | add r2, r10, r10, lsr #1 @ work out 3x current cache level | 127 | add r2, r10, r10, lsr #1 @ work out 3x current cache level |