This provides a central point for CPU cache initialization routines.
This replaces the antiquated p3_cache_init() method, which the vast
majority of CPUs never cared about.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
*
* See arch/sh/kernel/cpu/init.c:cache_init().
*/
-#define p3_cache_init() do { } while (0)
#define flush_cache_all() do { } while (0)
#define flush_cache_mm(mm) do { } while (0)
#define flush_cache_dup_mm(mm) do { } while (0)
#define PG_dcache_dirty PG_arch_1
+void cpu_cache_init(void);
+
#endif /* __KERNEL__ */
#endif /* __ASM_SH_CACHEFLUSH_H */
#define flush_icache_user_range(vma,pg,adr,len) do { } while (0)
#define flush_cache_sigtramp(vaddr) do { } while (0)
-#define p3_cache_init() do { } while (0)
-
#endif /* __ASM_CPU_SH2_CACHEFLUSH_H */
#define flush_icache_user_range(vma,pg,adr,len) do { } while (0)
#define flush_cache_sigtramp(vaddr) do { } while (0)
-#define p3_cache_init() do { } while (0)
#endif /* __ASM_CPU_SH2A_CACHEFLUSH_H */
#define flush_cache_sigtramp(vaddr) do { } while (0)
#define flush_icache_user_range(vma,pg,adr,len) do { } while (0)
-#define p3_cache_init() do { } while (0)
-
#else
#include <cpu-common/cpu/cacheflush.h>
#endif
#define flush_icache_page(vma,pg) do { } while (0)
-/* Initialization of P3 area for copy_user_page */
-void p3_cache_init(void);
-
#endif /* __ASM_CPU_SH4_CACHEFLUSH_H */
#define flush_dcache_mmap_unlock(mapping) do { } while (0)
#define flush_icache_page(vma, page) do { } while (0)
-void p3_cache_init(void);
#endif /* __ASSEMBLY__ */
/*
* SH-4 has virtually indexed and physically tagged cache.
*/
-void __init p3_cache_init(void)
+void __init sh4_cache_init(void)
{
compute_alias(&boot_cpu_data.icache);
compute_alias(&boot_cpu_data.dcache);
/* Wired TLB entry for the D-cache */
static unsigned long long dtlb_cache_slot;
-void __init p3_cache_init(void)
+void __init cpu_cache_init(void)
{
/* Reserve a slot for dcache colouring in the DTLB */
dtlb_cache_slot = sh64_get_wired_dtlb_entry();
__flush_wback_region((void *)addr, PAGE_SIZE);
}
}
+
+void __init cpu_cache_init(void)
+{
+ if ((boot_cpu_data.family == CPU_FAMILY_SH4) ||
+ (boot_cpu_data.family == CPU_FAMILY_SH4A) ||
+ (boot_cpu_data.family == CPU_FAMILY_SH4AL_DSP)) {
+ extern void __weak sh4_cache_init(void);
+
+ sh4_cache_init();
+ }
+}
datasize >> 10,
initsize >> 10);
- p3_cache_init();
+ cpu_cache_init();
/* Initialize the vDSO */
vsyscall_init();