|
@@ -988,6 +988,59 @@ static inline void cpu_probe_ingenic(struct cpuinfo_mips *c, unsigned int cpu)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+static inline void cpu_probe_netlogic(struct cpuinfo_mips *c, int cpu)
|
|
|
+{
|
|
|
+ decode_configs(c);
|
|
|
+
|
|
|
+ c->options = (MIPS_CPU_TLB |
|
|
|
+ MIPS_CPU_4KEX |
|
|
|
+ MIPS_CPU_COUNTER |
|
|
|
+ MIPS_CPU_DIVEC |
|
|
|
+ MIPS_CPU_WATCH |
|
|
|
+ MIPS_CPU_EJTAG |
|
|
|
+ MIPS_CPU_LLSC);
|
|
|
+
|
|
|
+ switch (c->processor_id & 0xff00) {
|
|
|
+ case PRID_IMP_NETLOGIC_XLR732:
|
|
|
+ case PRID_IMP_NETLOGIC_XLR716:
|
|
|
+ case PRID_IMP_NETLOGIC_XLR532:
|
|
|
+ case PRID_IMP_NETLOGIC_XLR308:
|
|
|
+ case PRID_IMP_NETLOGIC_XLR532C:
|
|
|
+ case PRID_IMP_NETLOGIC_XLR516C:
|
|
|
+ case PRID_IMP_NETLOGIC_XLR508C:
|
|
|
+ case PRID_IMP_NETLOGIC_XLR308C:
|
|
|
+ c->cputype = CPU_XLR;
|
|
|
+ __cpu_name[cpu] = "Netlogic XLR";
|
|
|
+ break;
|
|
|
+
|
|
|
+ case PRID_IMP_NETLOGIC_XLS608:
|
|
|
+ case PRID_IMP_NETLOGIC_XLS408:
|
|
|
+ case PRID_IMP_NETLOGIC_XLS404:
|
|
|
+ case PRID_IMP_NETLOGIC_XLS208:
|
|
|
+ case PRID_IMP_NETLOGIC_XLS204:
|
|
|
+ case PRID_IMP_NETLOGIC_XLS108:
|
|
|
+ case PRID_IMP_NETLOGIC_XLS104:
|
|
|
+ case PRID_IMP_NETLOGIC_XLS616B:
|
|
|
+ case PRID_IMP_NETLOGIC_XLS608B:
|
|
|
+ case PRID_IMP_NETLOGIC_XLS416B:
|
|
|
+ case PRID_IMP_NETLOGIC_XLS412B:
|
|
|
+ case PRID_IMP_NETLOGIC_XLS408B:
|
|
|
+ case PRID_IMP_NETLOGIC_XLS404B:
|
|
|
+ c->cputype = CPU_XLR;
|
|
|
+ __cpu_name[cpu] = "Netlogic XLS";
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ printk(KERN_INFO "Unknown Netlogic chip id [%02x]!\n",
|
|
|
+ c->processor_id);
|
|
|
+ c->cputype = CPU_XLR;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ c->isa_level = MIPS_CPU_ISA_M64R1;
|
|
|
+ c->tlbsize = ((read_c0_config1() >> 25) & 0x3f) + 1;
|
|
|
+}
|
|
|
+
|
|
|
#ifdef CONFIG_64BIT
|
|
|
/* For use by uaccess.h */
|
|
|
u64 __ua_limit;
|
|
@@ -1035,6 +1088,9 @@ __cpuinit void cpu_probe(void)
|
|
|
case PRID_COMP_INGENIC:
|
|
|
cpu_probe_ingenic(c, cpu);
|
|
|
break;
|
|
|
+ case PRID_COMP_NETLOGIC:
|
|
|
+ cpu_probe_netlogic(c, cpu);
|
|
|
+ break;
|
|
|
}
|
|
|
|
|
|
BUG_ON(!__cpu_name[cpu]);
|