diff options
Diffstat (limited to 'arch/sh/mm')
-rw-r--r-- | arch/sh/mm/cache-sh2a.c | 17 | ||||
-rw-r--r-- | arch/sh/mm/cache.c | 6 |
2 files changed, 19 insertions, 4 deletions
diff --git a/arch/sh/mm/cache-sh2a.c b/arch/sh/mm/cache-sh2a.c index 24d86a794065..96a41872dfd3 100644 --- a/arch/sh/mm/cache-sh2a.c +++ b/arch/sh/mm/cache-sh2a.c | |||
@@ -15,7 +15,7 @@ | |||
15 | #include <asm/cacheflush.h> | 15 | #include <asm/cacheflush.h> |
16 | #include <asm/io.h> | 16 | #include <asm/io.h> |
17 | 17 | ||
18 | void __flush_wback_region(void *start, int size) | 18 | static void sh2a__flush_wback_region(void *start, int size) |
19 | { | 19 | { |
20 | unsigned long v; | 20 | unsigned long v; |
21 | unsigned long begin, end; | 21 | unsigned long begin, end; |
@@ -44,7 +44,7 @@ void __flush_wback_region(void *start, int size) | |||
44 | local_irq_restore(flags); | 44 | local_irq_restore(flags); |
45 | } | 45 | } |
46 | 46 | ||
47 | void __flush_purge_region(void *start, int size) | 47 | static void sh2a__flush_purge_region(void *start, int size) |
48 | { | 48 | { |
49 | unsigned long v; | 49 | unsigned long v; |
50 | unsigned long begin, end; | 50 | unsigned long begin, end; |
@@ -65,7 +65,7 @@ void __flush_purge_region(void *start, int size) | |||
65 | local_irq_restore(flags); | 65 | local_irq_restore(flags); |
66 | } | 66 | } |
67 | 67 | ||
68 | void __flush_invalidate_region(void *start, int size) | 68 | static void sh2a__flush_invalidate_region(void *start, int size) |
69 | { | 69 | { |
70 | unsigned long v; | 70 | unsigned long v; |
71 | unsigned long begin, end; | 71 | unsigned long begin, end; |
@@ -97,7 +97,7 @@ void __flush_invalidate_region(void *start, int size) | |||
97 | } | 97 | } |
98 | 98 | ||
99 | /* WBack O-Cache and flush I-Cache */ | 99 | /* WBack O-Cache and flush I-Cache */ |
100 | void flush_icache_range(unsigned long start, unsigned long end) | 100 | static void sh2a_flush_icache_range(unsigned long start, unsigned long end) |
101 | { | 101 | { |
102 | unsigned long v; | 102 | unsigned long v; |
103 | unsigned long flags; | 103 | unsigned long flags; |
@@ -127,3 +127,12 @@ void flush_icache_range(unsigned long start, unsigned long end) | |||
127 | back_to_cached(); | 127 | back_to_cached(); |
128 | local_irq_restore(flags); | 128 | local_irq_restore(flags); |
129 | } | 129 | } |
130 | |||
131 | void __init sh2a_cache_init(void) | ||
132 | { | ||
133 | flush_icache_range = sh2a_flush_icache_range; | ||
134 | |||
135 | __flush_wback_region = sh2a__flush_wback_region; | ||
136 | __flush_purge_region = sh2a__flush_purge_region; | ||
137 | __flush_invalidate_region = sh2a__flush_invalidate_region; | ||
138 | } | ||
diff --git a/arch/sh/mm/cache.c b/arch/sh/mm/cache.c index 5ac299d6604e..b56cce408912 100644 --- a/arch/sh/mm/cache.c +++ b/arch/sh/mm/cache.c | |||
@@ -250,6 +250,12 @@ void __init cpu_cache_init(void) | |||
250 | sh2_cache_init(); | 250 | sh2_cache_init(); |
251 | } | 251 | } |
252 | 252 | ||
253 | if (boot_cpu_data.family == CPU_FAMILY_SH2A) { | ||
254 | extern void __weak sh2a_cache_init(void); | ||
255 | |||
256 | sh2a_cache_init(); | ||
257 | } | ||
258 | |||
253 | if ((boot_cpu_data.family == CPU_FAMILY_SH4) || | 259 | if ((boot_cpu_data.family == CPU_FAMILY_SH4) || |
254 | (boot_cpu_data.family == CPU_FAMILY_SH4A) || | 260 | (boot_cpu_data.family == CPU_FAMILY_SH4A) || |
255 | (boot_cpu_data.family == CPU_FAMILY_SH4AL_DSP)) { | 261 | (boot_cpu_data.family == CPU_FAMILY_SH4AL_DSP)) { |