diff options
Diffstat (limited to 'arch/mips/kernel/cpu-probe.c')
-rw-r--r-- | arch/mips/kernel/cpu-probe.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c index 758ad426c57f..323395081b2a 100644 --- a/arch/mips/kernel/cpu-probe.c +++ b/arch/mips/kernel/cpu-probe.c | |||
@@ -700,6 +700,19 @@ static inline unsigned int decode_config3(struct cpuinfo_mips *c) | |||
700 | return config3 & MIPS_CONF_M; | 700 | return config3 & MIPS_CONF_M; |
701 | } | 701 | } |
702 | 702 | ||
703 | static inline unsigned int decode_config4(struct cpuinfo_mips *c) | ||
704 | { | ||
705 | unsigned int config4; | ||
706 | |||
707 | config4 = read_c0_config4(); | ||
708 | |||
709 | if ((config4 & MIPS_CONF4_MMUEXTDEF) == MIPS_CONF4_MMUEXTDEF_MMUSIZEEXT | ||
710 | && cpu_has_tlb) | ||
711 | c->tlbsize += (config4 & MIPS_CONF4_MMUSIZEEXT) * 0x40; | ||
712 | |||
713 | return config4 & MIPS_CONF_M; | ||
714 | } | ||
715 | |||
703 | static void __cpuinit decode_configs(struct cpuinfo_mips *c) | 716 | static void __cpuinit decode_configs(struct cpuinfo_mips *c) |
704 | { | 717 | { |
705 | int ok; | 718 | int ok; |
@@ -718,6 +731,8 @@ static void __cpuinit decode_configs(struct cpuinfo_mips *c) | |||
718 | ok = decode_config2(c); | 731 | ok = decode_config2(c); |
719 | if (ok) | 732 | if (ok) |
720 | ok = decode_config3(c); | 733 | ok = decode_config3(c); |
734 | if (ok) | ||
735 | ok = decode_config4(c); | ||
721 | 736 | ||
722 | mips_probe_watch_registers(c); | 737 | mips_probe_watch_registers(c); |
723 | } | 738 | } |