aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/kernel/cpu-probe.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/kernel/cpu-probe.c')
-rw-r--r--arch/mips/kernel/cpu-probe.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
index f65d4c8c65a6..c7b7eb24e277 100644
--- a/arch/mips/kernel/cpu-probe.c
+++ b/arch/mips/kernel/cpu-probe.c
@@ -988,6 +988,59 @@ static inline void cpu_probe_ingenic(struct cpuinfo_mips *c, unsigned int cpu)
988 } 988 }
989} 989}
990 990
991static inline void cpu_probe_netlogic(struct cpuinfo_mips *c, int cpu)
992{
993 decode_configs(c);
994
995 c->options = (MIPS_CPU_TLB |
996 MIPS_CPU_4KEX |
997 MIPS_CPU_COUNTER |
998 MIPS_CPU_DIVEC |
999 MIPS_CPU_WATCH |
1000 MIPS_CPU_EJTAG |
1001 MIPS_CPU_LLSC);
1002
1003 switch (c->processor_id & 0xff00) {
1004 case PRID_IMP_NETLOGIC_XLR732:
1005 case PRID_IMP_NETLOGIC_XLR716:
1006 case PRID_IMP_NETLOGIC_XLR532:
1007 case PRID_IMP_NETLOGIC_XLR308:
1008 case PRID_IMP_NETLOGIC_XLR532C:
1009 case PRID_IMP_NETLOGIC_XLR516C:
1010 case PRID_IMP_NETLOGIC_XLR508C:
1011 case PRID_IMP_NETLOGIC_XLR308C:
1012 c->cputype = CPU_XLR;
1013 __cpu_name[cpu] = "Netlogic XLR";
1014 break;
1015
1016 case PRID_IMP_NETLOGIC_XLS608:
1017 case PRID_IMP_NETLOGIC_XLS408:
1018 case PRID_IMP_NETLOGIC_XLS404:
1019 case PRID_IMP_NETLOGIC_XLS208:
1020 case PRID_IMP_NETLOGIC_XLS204:
1021 case PRID_IMP_NETLOGIC_XLS108:
1022 case PRID_IMP_NETLOGIC_XLS104:
1023 case PRID_IMP_NETLOGIC_XLS616B:
1024 case PRID_IMP_NETLOGIC_XLS608B:
1025 case PRID_IMP_NETLOGIC_XLS416B:
1026 case PRID_IMP_NETLOGIC_XLS412B:
1027 case PRID_IMP_NETLOGIC_XLS408B:
1028 case PRID_IMP_NETLOGIC_XLS404B:
1029 c->cputype = CPU_XLR;
1030 __cpu_name[cpu] = "Netlogic XLS";
1031 break;
1032
1033 default:
1034 printk(KERN_INFO "Unknown Netlogic chip id [%02x]!\n",
1035 c->processor_id);
1036 c->cputype = CPU_XLR;
1037 break;
1038 }
1039
1040 c->isa_level = MIPS_CPU_ISA_M64R1;
1041 c->tlbsize = ((read_c0_config1() >> 25) & 0x3f) + 1;
1042}
1043
991#ifdef CONFIG_64BIT 1044#ifdef CONFIG_64BIT
992/* For use by uaccess.h */ 1045/* For use by uaccess.h */
993u64 __ua_limit; 1046u64 __ua_limit;
@@ -1035,6 +1088,9 @@ __cpuinit void cpu_probe(void)
1035 case PRID_COMP_INGENIC: 1088 case PRID_COMP_INGENIC:
1036 cpu_probe_ingenic(c, cpu); 1089 cpu_probe_ingenic(c, cpu);
1037 break; 1090 break;
1091 case PRID_COMP_NETLOGIC:
1092 cpu_probe_netlogic(c, cpu);
1093 break;
1038 } 1094 }
1039 1095
1040 BUG_ON(!__cpu_name[cpu]); 1096 BUG_ON(!__cpu_name[cpu]);