aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/mm/cache.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/mm/cache.c')
-rw-r--r--arch/mips/mm/cache.c90
1 files changed, 40 insertions, 50 deletions
diff --git a/arch/mips/mm/cache.c b/arch/mips/mm/cache.c
index 172293b58390..611b48dde737 100644
--- a/arch/mips/mm/cache.c
+++ b/arch/mips/mm/cache.c
@@ -104,58 +104,48 @@ void __update_cache(struct vm_area_struct *vma, unsigned long address,
104 } 104 }
105} 105}
106 106
107extern void ld_mmu_r23000(void); 107#define __weak __attribute__((weak))
108extern void ld_mmu_r4xx0(void); 108
109extern void ld_mmu_tx39(void); 109static char cache_panic[] __initdata = "Yeee, unsupported cache architecture.";
110extern void ld_mmu_r6000(void);
111extern void ld_mmu_tfp(void);
112extern void ld_mmu_andes(void);
113extern void ld_mmu_sb1(void);
114 110
115void __init cpu_cache_init(void) 111void __init cpu_cache_init(void)
116{ 112{
117 if (cpu_has_4ktlb) { 113 if (cpu_has_3k_cache) {
118#if defined(CONFIG_CPU_R4X00) || defined(CONFIG_CPU_VR41XX) || \ 114 extern void __weak r3k_cache_init(void);
119 defined(CONFIG_CPU_R4300) || defined(CONFIG_CPU_R5000) || \ 115
120 defined(CONFIG_CPU_NEVADA) || defined(CONFIG_CPU_R5432) || \ 116 r3k_cache_init();
121 defined(CONFIG_CPU_R5500) || defined(CONFIG_CPU_MIPS32_R1) || \ 117 return;
122 defined(CONFIG_CPU_MIPS64_R1) || defined(CONFIG_CPU_TX49XX) || \ 118 }
123 defined(CONFIG_CPU_RM7000) || defined(CONFIG_CPU_RM9000) 119 if (cpu_has_6k_cache) {
124 ld_mmu_r4xx0(); 120 extern void __weak r6k_cache_init(void);
125#endif 121
126 } else switch (current_cpu_data.cputype) { 122 r6k_cache_init();
127#ifdef CONFIG_CPU_R3000 123 return;
128 case CPU_R2000:
129 case CPU_R3000:
130 case CPU_R3000A:
131 case CPU_R3081E:
132 ld_mmu_r23000();
133 break;
134#endif
135#ifdef CONFIG_CPU_TX39XX
136 case CPU_TX3912:
137 case CPU_TX3922:
138 case CPU_TX3927:
139 ld_mmu_tx39();
140 break;
141#endif
142#ifdef CONFIG_CPU_R10000
143 case CPU_R10000:
144 case CPU_R12000:
145 ld_mmu_r4xx0();
146 break;
147#endif
148#ifdef CONFIG_CPU_SB1
149 case CPU_SB1:
150 ld_mmu_sb1();
151 break;
152#endif
153
154 case CPU_R8000:
155 panic("R8000 is unsupported");
156 break;
157
158 default:
159 panic("Yeee, unsupported cache architecture.");
160 } 124 }
125 if (cpu_has_4k_cache) {
126 extern void __weak r4k_cache_init(void);
127
128 r4k_cache_init();
129 return;
130 }
131 if (cpu_has_8k_cache) {
132 extern void __weak r8k_cache_init(void);
133
134 r8k_cache_init();
135 return;
136 }
137 if (cpu_has_tx39_cache) {
138 extern void __weak tx39_cache_init(void);
139
140 tx39_cache_init();
141 return;
142 }
143 if (cpu_has_sb1_cache) {
144 extern void __weak sb1_cache_init(void);
145
146 sb1_cache_init();
147 return;
148 }
149
150 panic(cache_panic);
161} 151}