diff options
Diffstat (limited to 'arch/arm/mm/cache-feroceon-l2.c')
-rw-r--r-- | arch/arm/mm/cache-feroceon-l2.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/arm/mm/cache-feroceon-l2.c b/arch/arm/mm/cache-feroceon-l2.c index d6dd83826f8a..6e77c042d8e9 100644 --- a/arch/arm/mm/cache-feroceon-l2.c +++ b/arch/arm/mm/cache-feroceon-l2.c | |||
@@ -115,6 +115,10 @@ static inline void l2_inv_pa_range(unsigned long start, unsigned long end) | |||
115 | raw_local_irq_restore(flags); | 115 | raw_local_irq_restore(flags); |
116 | } | 116 | } |
117 | 117 | ||
118 | static inline void l2_inv_all(void) | ||
119 | { | ||
120 | __asm__("mcr p15, 1, %0, c15, c11, 0" : : "r" (0)); | ||
121 | } | ||
118 | 122 | ||
119 | /* | 123 | /* |
120 | * Linux primitives. | 124 | * Linux primitives. |
@@ -254,9 +258,7 @@ static void __init enable_dcache(void) | |||
254 | 258 | ||
255 | static void __init __invalidate_icache(void) | 259 | static void __init __invalidate_icache(void) |
256 | { | 260 | { |
257 | int dummy; | 261 | __asm__("mcr p15, 0, %0, c7, c5, 0" : : "r" (0)); |
258 | |||
259 | __asm__ __volatile__("mcr p15, 0, %0, c7, c5, 0" : "=r" (dummy)); | ||
260 | } | 262 | } |
261 | 263 | ||
262 | static int __init invalidate_and_disable_icache(void) | 264 | static int __init invalidate_and_disable_icache(void) |
@@ -321,6 +323,7 @@ static void __init enable_l2(void) | |||
321 | 323 | ||
322 | d = flush_and_disable_dcache(); | 324 | d = flush_and_disable_dcache(); |
323 | i = invalidate_and_disable_icache(); | 325 | i = invalidate_and_disable_icache(); |
326 | l2_inv_all(); | ||
324 | write_extra_features(u | 0x00400000); | 327 | write_extra_features(u | 0x00400000); |
325 | if (i) | 328 | if (i) |
326 | enable_icache(); | 329 | enable_icache(); |