|
@@ -700,6 +700,19 @@ static inline unsigned int decode_config3(struct cpuinfo_mips *c)
|
|
|
return config3 & MIPS_CONF_M;
|
|
|
}
|
|
|
|
|
|
+static inline unsigned int decode_config4(struct cpuinfo_mips *c)
|
|
|
+{
|
|
|
+ unsigned int config4;
|
|
|
+
|
|
|
+ config4 = read_c0_config4();
|
|
|
+
|
|
|
+ if ((config4 & MIPS_CONF4_MMUEXTDEF) == MIPS_CONF4_MMUEXTDEF_MMUSIZEEXT
|
|
|
+ && cpu_has_tlb)
|
|
|
+ c->tlbsize += (config4 & MIPS_CONF4_MMUSIZEEXT) * 0x40;
|
|
|
+
|
|
|
+ return config4 & MIPS_CONF_M;
|
|
|
+}
|
|
|
+
|
|
|
static void __cpuinit decode_configs(struct cpuinfo_mips *c)
|
|
|
{
|
|
|
int ok;
|
|
@@ -718,6 +731,8 @@ static void __cpuinit decode_configs(struct cpuinfo_mips *c)
|
|
|
ok = decode_config2(c);
|
|
|
if (ok)
|
|
|
ok = decode_config3(c);
|
|
|
+ if (ok)
|
|
|
+ ok = decode_config4(c);
|
|
|
|
|
|
mips_probe_watch_registers(c);
|
|
|
}
|