···786786 }787787}788788789789+static inline void alias_74k_erratum(struct cpuinfo_mips *c)790790+{791791+ /*792792+ * Early versions of the 74K do not update the cache tags on a793793+ * vtag miss/ptag hit which can occur in the case of KSEG0/KUSEG794794+ * aliases. In this case it is better to treat the cache as always795795+ * having aliases.796796+ */797797+ if ((c->processor_id & 0xff) <= PRID_REV_ENCODE_332(2, 4, 0))798798+ c->dcache.flags |= MIPS_CACHE_VTAG;799799+ if ((c->processor_id & 0xff) == PRID_REV_ENCODE_332(2, 4, 0))800800+ write_c0_config6(read_c0_config6() | MIPS_CONF6_SYND);801801+ if (((c->processor_id & 0xff00) == PRID_IMP_1074K) &&802802+ ((c->processor_id & 0xff) <= PRID_REV_ENCODE_332(1, 1, 0))) {803803+ c->dcache.flags |= MIPS_CACHE_VTAG;804804+ write_c0_config6(read_c0_config6() | MIPS_CONF6_SYND);805805+ }806806+}807807+789808static char *way_string[] __cpuinitdata = { NULL, "direct mapped", "2-way",790809 "3-way", "4-way", "5-way", "6-way", "7-way", "8-way"791810};···10751056 case CPU_34K:10761057 case CPU_74K:10771058 case CPU_1004K:10591059+ if (c->cputype == CPU_74K)10601060+ alias_74k_erratum(c);10781061 if ((read_c0_config7() & (1 << 16))) {10791062 /* effectively physically indexed dcache,10801063 thus no virtual aliases. */