|
@@ -414,6 +414,14 @@ static int __init ftlb_disable(char *s)
|
|
|
|
|
|
__setup("noftlb", ftlb_disable);
|
|
|
|
|
|
+/*
|
|
|
+ * Check if the CPU has per tc perf counters
|
|
|
+ */
|
|
|
+static inline void cpu_set_mt_per_tc_perf(struct cpuinfo_mips *c)
|
|
|
+{
|
|
|
+ if (read_c0_config7() & MTI_CONF7_PTC)
|
|
|
+ c->options |= MIPS_CPU_MT_PER_TC_PERF_COUNTERS;
|
|
|
+}
|
|
|
|
|
|
static inline void check_errata(void)
|
|
|
{
|
|
@@ -1572,6 +1580,7 @@ static inline void cpu_probe_mips(struct cpuinfo_mips *c, unsigned int cpu)
|
|
|
c->cputype = CPU_34K;
|
|
|
c->writecombine = _CACHE_UNCACHED;
|
|
|
__cpu_name[cpu] = "MIPS 34Kc";
|
|
|
+ cpu_set_mt_per_tc_perf(c);
|
|
|
break;
|
|
|
case PRID_IMP_74K:
|
|
|
c->cputype = CPU_74K;
|
|
@@ -1592,6 +1601,7 @@ static inline void cpu_probe_mips(struct cpuinfo_mips *c, unsigned int cpu)
|
|
|
c->cputype = CPU_1004K;
|
|
|
c->writecombine = _CACHE_UNCACHED;
|
|
|
__cpu_name[cpu] = "MIPS 1004Kc";
|
|
|
+ cpu_set_mt_per_tc_perf(c);
|
|
|
break;
|
|
|
case PRID_IMP_1074K:
|
|
|
c->cputype = CPU_1074K;
|
|
@@ -1601,10 +1611,12 @@ static inline void cpu_probe_mips(struct cpuinfo_mips *c, unsigned int cpu)
|
|
|
case PRID_IMP_INTERAPTIV_UP:
|
|
|
c->cputype = CPU_INTERAPTIV;
|
|
|
__cpu_name[cpu] = "MIPS interAptiv";
|
|
|
+ cpu_set_mt_per_tc_perf(c);
|
|
|
break;
|
|
|
case PRID_IMP_INTERAPTIV_MP:
|
|
|
c->cputype = CPU_INTERAPTIV;
|
|
|
__cpu_name[cpu] = "MIPS interAptiv (multi)";
|
|
|
+ cpu_set_mt_per_tc_perf(c);
|
|
|
break;
|
|
|
case PRID_IMP_PROAPTIV_UP:
|
|
|
c->cputype = CPU_PROAPTIV;
|