Commit e87569cd authored by Markos Chandras's avatar Markos Chandras Committed by Ralf Baechle

MIPS: cpu-probe: Fix VTLB/FTLB configuration for R6

R6 has dropped the MMUExtDef field from the config4 register and it
now returns 0. However, the return value means nothing in that case
and the only supported configuration for R6 is the VTLB+FTLB
(MMUextDef == 3). As a result, rework the code so that the correct
value is set for R6 cores.
Signed-off-by: default avatarMarkos Chandras <markos.chandras@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/10651/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 912708c2
...@@ -546,7 +546,16 @@ static inline unsigned int decode_config4(struct cpuinfo_mips *c) ...@@ -546,7 +546,16 @@ static inline unsigned int decode_config4(struct cpuinfo_mips *c)
if (cpu_has_tlb) { if (cpu_has_tlb) {
if (((config4 & MIPS_CONF4_IE) >> 29) == 2) if (((config4 & MIPS_CONF4_IE) >> 29) == 2)
c->options |= MIPS_CPU_TLBINV; c->options |= MIPS_CPU_TLBINV;
/*
* This is a bit ugly. R6 has dropped that field from
* config4 and the only valid configuration is VTLB+FTLB so
* set a good value for mmuextdef for that case.
*/
if (cpu_has_mips_r6)
mmuextdef = MIPS_CONF4_MMUEXTDEF_VTLBSIZEEXT;
else
mmuextdef = config4 & MIPS_CONF4_MMUEXTDEF; mmuextdef = config4 & MIPS_CONF4_MMUEXTDEF;
switch (mmuextdef) { switch (mmuextdef) {
case MIPS_CONF4_MMUEXTDEF_MMUSIZEEXT: case MIPS_CONF4_MMUEXTDEF_MMUSIZEEXT:
c->tlbsize += (config4 & MIPS_CONF4_MMUSIZEEXT) * 0x40; c->tlbsize += (config4 & MIPS_CONF4_MMUSIZEEXT) * 0x40;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment