aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/mm
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/mm')
-rw-r--r--arch/mips/mm/c-r4k.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c
index 643c8bcffff3..c41ea2284954 100644
--- a/arch/mips/mm/c-r4k.c
+++ b/arch/mips/mm/c-r4k.c
@@ -1226,6 +1226,28 @@ void au1x00_fixup_config_od(void)
1226 } 1226 }
1227} 1227}
1228 1228
1229/* CP0 hazard avoidance. */
1230#define NXP_BARRIER() \
1231 __asm__ __volatile__( \
1232 ".set noreorder\n\t" \
1233 "nop; nop; nop; nop; nop; nop;\n\t" \
1234 ".set reorder\n\t")
1235
1236static void nxp_pr4450_fixup_config(void)
1237{
1238 unsigned long config0;
1239
1240 config0 = read_c0_config();
1241
1242 /* clear all three cache coherency fields */
1243 config0 &= ~(0x7 | (7 << 25) | (7 << 28));
1244 config0 |= (((_page_cachable_default >> _CACHE_SHIFT) << 0) |
1245 ((_page_cachable_default >> _CACHE_SHIFT) << 25) |
1246 ((_page_cachable_default >> _CACHE_SHIFT) << 28));
1247 write_c0_config(config0);
1248 NXP_BARRIER();
1249}
1250
1229static int __cpuinitdata cca = -1; 1251static int __cpuinitdata cca = -1;
1230 1252
1231static int __init cca_setup(char *str) 1253static int __init cca_setup(char *str)
@@ -1271,6 +1293,10 @@ static void __cpuinit coherency_setup(void)
1271 case CPU_AU1500: /* rev. AB */ 1293 case CPU_AU1500: /* rev. AB */
1272 au1x00_fixup_config_od(); 1294 au1x00_fixup_config_od();
1273 break; 1295 break;
1296
1297 case PRID_IMP_PR4450:
1298 nxp_pr4450_fixup_config();
1299 break;
1274 } 1300 }
1275} 1301}
1276 1302