Lines Matching refs:c
900 static inline int alias_74k_erratum(struct cpuinfo_mips *c) in alias_74k_erratum() argument
902 unsigned int imp = c->processor_id & PRID_IMP_MASK; in alias_74k_erratum()
903 unsigned int rev = c->processor_id & PRID_REV_MASK; in alias_74k_erratum()
955 struct cpuinfo_mips *c = ¤t_cpu_data; in probe_pcache() local
968 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
969 c->icache.ways = 2; in probe_pcache()
970 c->icache.waybit = __ffs(icache_size/2); in probe_pcache()
973 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
974 c->dcache.ways = 2; in probe_pcache()
975 c->dcache.waybit= __ffs(dcache_size/2); in probe_pcache()
977 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
983 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
984 c->icache.ways = 2; in probe_pcache()
985 c->icache.waybit= 0; in probe_pcache()
988 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
989 c->dcache.ways = 2; in probe_pcache()
990 c->dcache.waybit = 0; in probe_pcache()
992 c->options |= MIPS_CPU_CACHE_CDEX_P | MIPS_CPU_PREFETCH; in probe_pcache()
997 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
998 c->icache.ways = 4; in probe_pcache()
999 c->icache.waybit= 0; in probe_pcache()
1002 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1003 c->dcache.ways = 4; in probe_pcache()
1004 c->dcache.waybit = 0; in probe_pcache()
1006 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
1007 c->options |= MIPS_CPU_PREFETCH; in probe_pcache()
1018 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
1019 c->icache.ways = 1; in probe_pcache()
1020 c->icache.waybit = 0; /* doesn't matter */ in probe_pcache()
1023 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1024 c->dcache.ways = 1; in probe_pcache()
1025 c->dcache.waybit = 0; /* does not matter */ in probe_pcache()
1027 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
1035 c->icache.linesz = 64; in probe_pcache()
1036 c->icache.ways = 2; in probe_pcache()
1037 c->icache.waybit = 0; in probe_pcache()
1040 c->dcache.linesz = 32; in probe_pcache()
1041 c->dcache.ways = 2; in probe_pcache()
1042 c->dcache.waybit = 0; in probe_pcache()
1044 c->options |= MIPS_CPU_PREFETCH; in probe_pcache()
1051 if (c->processor_id == 0x0c80U || c->processor_id == 0x0c81U || in probe_pcache()
1052 c->processor_id == 0x0c82U) { in probe_pcache()
1054 if (c->processor_id == 0x0c80U) in probe_pcache()
1058 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
1061 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
1062 c->icache.ways = 2; in probe_pcache()
1063 c->icache.waybit = __ffs(icache_size/2); in probe_pcache()
1066 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1067 c->dcache.ways = 2; in probe_pcache()
1068 c->dcache.waybit = __ffs(dcache_size/2); in probe_pcache()
1078 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
1079 c->icache.ways = 1; in probe_pcache()
1080 c->icache.waybit = 0; /* doesn't matter */ in probe_pcache()
1083 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1084 c->dcache.ways = 1; in probe_pcache()
1085 c->dcache.waybit = 0; /* does not matter */ in probe_pcache()
1087 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
1094 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
1095 c->icache.ways = 4; in probe_pcache()
1096 c->icache.waybit = __ffs(icache_size / c->icache.ways); in probe_pcache()
1099 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1100 c->dcache.ways = 4; in probe_pcache()
1101 c->dcache.waybit = __ffs(dcache_size / c->dcache.ways); in probe_pcache()
1103 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
1104 c->options |= MIPS_CPU_PREFETCH; in probe_pcache()
1109 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
1111 c->icache.ways = 4; in probe_pcache()
1113 c->icache.ways = 2; in probe_pcache()
1114 c->icache.waybit = 0; in probe_pcache()
1117 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1119 c->dcache.ways = 4; in probe_pcache()
1121 c->dcache.ways = 2; in probe_pcache()
1122 c->dcache.waybit = 0; in probe_pcache()
1129 c->icache.linesz = 2 << lsize; in probe_pcache()
1131 c->icache.linesz = 0; in probe_pcache()
1132 c->icache.sets = 64 << ((config1 >> 22) & 7); in probe_pcache()
1133 c->icache.ways = 1 + ((config1 >> 16) & 7); in probe_pcache()
1134 icache_size = c->icache.sets * in probe_pcache()
1135 c->icache.ways * in probe_pcache()
1136 c->icache.linesz; in probe_pcache()
1137 c->icache.waybit = 0; in probe_pcache()
1141 c->dcache.linesz = 2 << lsize; in probe_pcache()
1143 c->dcache.linesz = 0; in probe_pcache()
1144 c->dcache.sets = 64 << ((config1 >> 13) & 7); in probe_pcache()
1145 c->dcache.ways = 1 + ((config1 >> 7) & 7); in probe_pcache()
1146 dcache_size = c->dcache.sets * in probe_pcache()
1147 c->dcache.ways * in probe_pcache()
1148 c->dcache.linesz; in probe_pcache()
1149 c->dcache.waybit = 0; in probe_pcache()
1154 c->icache.linesz = 128; in probe_pcache()
1155 c->icache.sets = 16; in probe_pcache()
1156 c->icache.ways = 8; in probe_pcache()
1157 c->icache.flags |= MIPS_CACHE_VTAG; in probe_pcache()
1158 icache_size = c->icache.sets * c->icache.ways * c->icache.linesz; in probe_pcache()
1160 c->dcache.linesz = 128; in probe_pcache()
1161 c->dcache.ways = 8; in probe_pcache()
1162 c->dcache.sets = 8; in probe_pcache()
1163 dcache_size = c->dcache.sets * c->dcache.ways * c->dcache.linesz; in probe_pcache()
1164 c->options |= MIPS_CPU_PREFETCH; in probe_pcache()
1183 c->icache.linesz = lsize ? 2 << lsize : 0; in probe_pcache()
1185 c->icache.sets = 32 << (((config1 >> 22) + 1) & 7); in probe_pcache()
1186 c->icache.ways = 1 + ((config1 >> 16) & 7); in probe_pcache()
1188 icache_size = c->icache.sets * in probe_pcache()
1189 c->icache.ways * in probe_pcache()
1190 c->icache.linesz; in probe_pcache()
1191 c->icache.waybit = __ffs(icache_size/c->icache.ways); in probe_pcache()
1194 c->icache.flags |= MIPS_CACHE_VTAG; in probe_pcache()
1199 c->dcache.flags = 0; in probe_pcache()
1207 c->dcache.linesz = lsize ? 2 << lsize : 0; in probe_pcache()
1209 c->dcache.sets = 32 << (((config1 >> 13) + 1) & 7); in probe_pcache()
1210 c->dcache.ways = 1 + ((config1 >> 7) & 7); in probe_pcache()
1212 dcache_size = c->dcache.sets * in probe_pcache()
1213 c->dcache.ways * in probe_pcache()
1214 c->dcache.linesz; in probe_pcache()
1215 c->dcache.waybit = __ffs(dcache_size/c->dcache.ways); in probe_pcache()
1217 c->options |= MIPS_CPU_PREFETCH; in probe_pcache()
1231 !(config & CONF_SC) && c->icache.linesz != 16 && in probe_pcache()
1236 c->icache.waysize = icache_size / c->icache.ways; in probe_pcache()
1237 c->dcache.waysize = dcache_size / c->dcache.ways; in probe_pcache()
1239 c->icache.sets = c->icache.linesz ? in probe_pcache()
1240 icache_size / (c->icache.linesz * c->icache.ways) : 0; in probe_pcache()
1241 c->dcache.sets = c->dcache.linesz ? in probe_pcache()
1242 dcache_size / (c->dcache.linesz * c->dcache.ways) : 0; in probe_pcache()
1256 c->dcache.flags |= MIPS_CACHE_PINDEX; in probe_pcache()
1267 has_74k_erratum = alias_74k_erratum(c); in probe_pcache()
1281 (c->icache.waysize > PAGE_SIZE)) in probe_pcache()
1282 c->icache.flags |= MIPS_CACHE_ALIASES; in probe_pcache()
1288 c->dcache.flags |= MIPS_CACHE_PINDEX; in probe_pcache()
1292 if (has_74k_erratum || c->dcache.waysize > PAGE_SIZE) in probe_pcache()
1293 c->dcache.flags |= MIPS_CACHE_ALIASES; in probe_pcache()
1302 c->icache.flags |= MIPS_CACHE_VTAG; in probe_pcache()
1306 c->icache.flags |= MIPS_CACHE_IC_F_DC; in probe_pcache()
1314 c->icache.ways = 1; in probe_pcache()
1319 c->icache.flags & MIPS_CACHE_VTAG ? "VIVT" : "VIPT", in probe_pcache()
1320 way_string[c->icache.ways], c->icache.linesz); in probe_pcache()
1323 dcache_size >> 10, way_string[c->dcache.ways], in probe_pcache()
1324 (c->dcache.flags & MIPS_CACHE_PINDEX) ? "PIPT" : "VIPT", in probe_pcache()
1325 (c->dcache.flags & MIPS_CACHE_ALIASES) ? in probe_pcache()
1327 c->dcache.linesz); in probe_pcache()
1340 struct cpuinfo_mips *c = ¤t_cpu_data; in probe_scache() local
1384 c->scache.linesz = 16 << ((config & R4K_CONF_SB) >> 22); in probe_scache()
1385 c->scache.ways = 1; in probe_scache()
1386 c->scache.waybit = 0; /* does not matter */ in probe_scache()
1393 struct cpuinfo_mips *c = ¤t_cpu_data; in loongson2_sc_init() local
1396 c->scache.linesz = 32; in loongson2_sc_init()
1397 c->scache.ways = 4; in loongson2_sc_init()
1398 c->scache.waybit = 0; in loongson2_sc_init()
1399 c->scache.waysize = scache_size / (c->scache.ways); in loongson2_sc_init()
1400 c->scache.sets = scache_size / (c->scache.linesz * c->scache.ways); in loongson2_sc_init()
1402 scache_size >> 10, way_string[c->scache.ways], c->scache.linesz); in loongson2_sc_init()
1404 c->options |= MIPS_CPU_INCLUSIVE_CACHES; in loongson2_sc_init()
1409 struct cpuinfo_mips *c = ¤t_cpu_data; in loongson3_sc_init() local
1415 c->scache.linesz = 2 << lsize; in loongson3_sc_init()
1417 c->scache.linesz = 0; in loongson3_sc_init()
1418 c->scache.sets = 64 << ((config2 >> 8) & 15); in loongson3_sc_init()
1419 c->scache.ways = 1 + (config2 & 15); in loongson3_sc_init()
1421 scache_size = c->scache.sets * in loongson3_sc_init()
1422 c->scache.ways * in loongson3_sc_init()
1423 c->scache.linesz; in loongson3_sc_init()
1426 c->scache.waybit = 0; in loongson3_sc_init()
1428 scache_size >> 10, way_string[c->scache.ways], c->scache.linesz); in loongson3_sc_init()
1430 c->options |= MIPS_CPU_INCLUSIVE_CACHES; in loongson3_sc_init()
1440 struct cpuinfo_mips *c = ¤t_cpu_data; in setup_scache() local
1456 c->options |= MIPS_CPU_CACHE_CDEX_S; in setup_scache()
1464 c->scache.linesz = 64 << ((config >> 13) & 1); in setup_scache()
1465 c->scache.ways = 2; in setup_scache()
1466 c->scache.waybit= 0; in setup_scache()
1497 if (c->isa_level & (MIPS_CPU_ISA_M32R1 | MIPS_CPU_ISA_M32R2 | in setup_scache()
1502 scache_size = c->scache.ways * c->scache.sets * c->scache.linesz; in setup_scache()
1505 way_string[c->scache.ways], c->scache.linesz); in setup_scache()
1508 if (!(c->scache.flags & MIPS_CACHE_NOT_PRESENT)) in setup_scache()
1520 c->scache.waysize = scache_size / c->scache.ways; in setup_scache()
1522 c->scache.sets = scache_size / (c->scache.linesz * c->scache.ways); in setup_scache()
1525 scache_size >> 10, way_string[c->scache.ways], c->scache.linesz); in setup_scache()
1527 c->options |= MIPS_CPU_INCLUSIVE_CACHES; in setup_scache()
1649 struct cpuinfo_mips *c = ¤t_cpu_data; in r4k_cache_init() local
1673 if (c->dcache.linesz) in r4k_cache_init()
1675 c->dcache.sets * c->dcache.linesz - 1, in r4k_cache_init()
1734 if (c->scache.flags & MIPS_CACHE_NOT_PRESENT) in r4k_cache_init()