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()
953 struct cpuinfo_mips *c = &current_cpu_data; in probe_pcache() local
966 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
967 c->icache.ways = 2; in probe_pcache()
968 c->icache.waybit = __ffs(icache_size/2); in probe_pcache()
971 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
972 c->dcache.ways = 2; in probe_pcache()
973 c->dcache.waybit= __ffs(dcache_size/2); in probe_pcache()
975 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
981 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
982 c->icache.ways = 2; in probe_pcache()
983 c->icache.waybit= 0; in probe_pcache()
986 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
987 c->dcache.ways = 2; in probe_pcache()
988 c->dcache.waybit = 0; in probe_pcache()
990 c->options |= MIPS_CPU_CACHE_CDEX_P | MIPS_CPU_PREFETCH; in probe_pcache()
995 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
996 c->icache.ways = 4; in probe_pcache()
997 c->icache.waybit= 0; in probe_pcache()
1000 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1001 c->dcache.ways = 4; in probe_pcache()
1002 c->dcache.waybit = 0; in probe_pcache()
1004 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
1005 c->options |= MIPS_CPU_PREFETCH; in probe_pcache()
1016 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
1017 c->icache.ways = 1; in probe_pcache()
1018 c->icache.waybit = 0; /* doesn't matter */ in probe_pcache()
1021 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1022 c->dcache.ways = 1; in probe_pcache()
1023 c->dcache.waybit = 0; /* does not matter */ in probe_pcache()
1025 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
1033 c->icache.linesz = 64; in probe_pcache()
1034 c->icache.ways = 2; in probe_pcache()
1035 c->icache.waybit = 0; in probe_pcache()
1038 c->dcache.linesz = 32; in probe_pcache()
1039 c->dcache.ways = 2; in probe_pcache()
1040 c->dcache.waybit = 0; in probe_pcache()
1042 c->options |= MIPS_CPU_PREFETCH; in probe_pcache()
1049 if (c->processor_id == 0x0c80U || c->processor_id == 0x0c81U || in probe_pcache()
1050 c->processor_id == 0x0c82U) { in probe_pcache()
1052 if (c->processor_id == 0x0c80U) in probe_pcache()
1056 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
1059 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
1060 c->icache.ways = 2; in probe_pcache()
1061 c->icache.waybit = __ffs(icache_size/2); in probe_pcache()
1064 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1065 c->dcache.ways = 2; in probe_pcache()
1066 c->dcache.waybit = __ffs(dcache_size/2); in probe_pcache()
1076 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
1077 c->icache.ways = 1; in probe_pcache()
1078 c->icache.waybit = 0; /* doesn't matter */ in probe_pcache()
1081 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1082 c->dcache.ways = 1; in probe_pcache()
1083 c->dcache.waybit = 0; /* does not matter */ in probe_pcache()
1085 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
1092 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
1093 c->icache.ways = 4; in probe_pcache()
1094 c->icache.waybit = __ffs(icache_size / c->icache.ways); in probe_pcache()
1097 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1098 c->dcache.ways = 4; in probe_pcache()
1099 c->dcache.waybit = __ffs(dcache_size / c->dcache.ways); in probe_pcache()
1101 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
1102 c->options |= MIPS_CPU_PREFETCH; in probe_pcache()
1107 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
1109 c->icache.ways = 4; in probe_pcache()
1111 c->icache.ways = 2; in probe_pcache()
1112 c->icache.waybit = 0; in probe_pcache()
1115 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1117 c->dcache.ways = 4; in probe_pcache()
1119 c->dcache.ways = 2; in probe_pcache()
1120 c->dcache.waybit = 0; in probe_pcache()
1127 c->icache.linesz = 2 << lsize; in probe_pcache()
1129 c->icache.linesz = 0; in probe_pcache()
1130 c->icache.sets = 64 << ((config1 >> 22) & 7); in probe_pcache()
1131 c->icache.ways = 1 + ((config1 >> 16) & 7); in probe_pcache()
1132 icache_size = c->icache.sets * in probe_pcache()
1133 c->icache.ways * in probe_pcache()
1134 c->icache.linesz; in probe_pcache()
1135 c->icache.waybit = 0; in probe_pcache()
1139 c->dcache.linesz = 2 << lsize; in probe_pcache()
1141 c->dcache.linesz = 0; in probe_pcache()
1142 c->dcache.sets = 64 << ((config1 >> 13) & 7); in probe_pcache()
1143 c->dcache.ways = 1 + ((config1 >> 7) & 7); in probe_pcache()
1144 dcache_size = c->dcache.sets * in probe_pcache()
1145 c->dcache.ways * in probe_pcache()
1146 c->dcache.linesz; in probe_pcache()
1147 c->dcache.waybit = 0; in probe_pcache()
1152 c->icache.linesz = 128; in probe_pcache()
1153 c->icache.sets = 16; in probe_pcache()
1154 c->icache.ways = 8; in probe_pcache()
1155 c->icache.flags |= MIPS_CACHE_VTAG; in probe_pcache()
1156 icache_size = c->icache.sets * c->icache.ways * c->icache.linesz; in probe_pcache()
1158 c->dcache.linesz = 128; in probe_pcache()
1159 c->dcache.ways = 8; in probe_pcache()
1160 c->dcache.sets = 8; in probe_pcache()
1161 dcache_size = c->dcache.sets * c->dcache.ways * c->dcache.linesz; in probe_pcache()
1162 c->options |= MIPS_CPU_PREFETCH; in probe_pcache()
1181 c->icache.linesz = lsize ? 2 << lsize : 0; in probe_pcache()
1183 c->icache.sets = 32 << (((config1 >> 22) + 1) & 7); in probe_pcache()
1184 c->icache.ways = 1 + ((config1 >> 16) & 7); in probe_pcache()
1186 icache_size = c->icache.sets * in probe_pcache()
1187 c->icache.ways * in probe_pcache()
1188 c->icache.linesz; in probe_pcache()
1189 c->icache.waybit = __ffs(icache_size/c->icache.ways); in probe_pcache()
1192 c->icache.flags |= MIPS_CACHE_VTAG; in probe_pcache()
1197 c->dcache.flags = 0; in probe_pcache()
1205 c->dcache.linesz = lsize ? 2 << lsize : 0; in probe_pcache()
1207 c->dcache.sets = 32 << (((config1 >> 13) + 1) & 7); in probe_pcache()
1208 c->dcache.ways = 1 + ((config1 >> 7) & 7); in probe_pcache()
1210 dcache_size = c->dcache.sets * in probe_pcache()
1211 c->dcache.ways * in probe_pcache()
1212 c->dcache.linesz; in probe_pcache()
1213 c->dcache.waybit = __ffs(dcache_size/c->dcache.ways); in probe_pcache()
1215 c->options |= MIPS_CPU_PREFETCH; in probe_pcache()
1229 !(config & CONF_SC) && c->icache.linesz != 16 && in probe_pcache()
1234 c->icache.waysize = icache_size / c->icache.ways; in probe_pcache()
1235 c->dcache.waysize = dcache_size / c->dcache.ways; in probe_pcache()
1237 c->icache.sets = c->icache.linesz ? in probe_pcache()
1238 icache_size / (c->icache.linesz * c->icache.ways) : 0; in probe_pcache()
1239 c->dcache.sets = c->dcache.linesz ? in probe_pcache()
1240 dcache_size / (c->dcache.linesz * c->dcache.ways) : 0; in probe_pcache()
1254 c->dcache.flags |= MIPS_CACHE_PINDEX; in probe_pcache()
1265 has_74k_erratum = alias_74k_erratum(c); in probe_pcache()
1278 (c->icache.waysize > PAGE_SIZE)) in probe_pcache()
1279 c->icache.flags |= MIPS_CACHE_ALIASES; in probe_pcache()
1285 c->dcache.flags |= MIPS_CACHE_PINDEX; in probe_pcache()
1289 if (has_74k_erratum || c->dcache.waysize > PAGE_SIZE) in probe_pcache()
1290 c->dcache.flags |= MIPS_CACHE_ALIASES; in probe_pcache()
1299 c->icache.flags |= MIPS_CACHE_VTAG; in probe_pcache()
1303 c->icache.flags |= MIPS_CACHE_IC_F_DC; in probe_pcache()
1311 c->icache.ways = 1; in probe_pcache()
1316 c->icache.flags & MIPS_CACHE_VTAG ? "VIVT" : "VIPT", in probe_pcache()
1317 way_string[c->icache.ways], c->icache.linesz); in probe_pcache()
1320 dcache_size >> 10, way_string[c->dcache.ways], in probe_pcache()
1321 (c->dcache.flags & MIPS_CACHE_PINDEX) ? "PIPT" : "VIPT", in probe_pcache()
1322 (c->dcache.flags & MIPS_CACHE_ALIASES) ? in probe_pcache()
1324 c->dcache.linesz); in probe_pcache()
1337 struct cpuinfo_mips *c = &current_cpu_data; in probe_scache() local
1381 c->scache.linesz = 16 << ((config & R4K_CONF_SB) >> 22); in probe_scache()
1382 c->scache.ways = 1; in probe_scache()
1383 c->scache.waybit = 0; /* does not matter */ in probe_scache()
1390 struct cpuinfo_mips *c = &current_cpu_data; in loongson2_sc_init() local
1393 c->scache.linesz = 32; in loongson2_sc_init()
1394 c->scache.ways = 4; in loongson2_sc_init()
1395 c->scache.waybit = 0; in loongson2_sc_init()
1396 c->scache.waysize = scache_size / (c->scache.ways); in loongson2_sc_init()
1397 c->scache.sets = scache_size / (c->scache.linesz * c->scache.ways); in loongson2_sc_init()
1399 scache_size >> 10, way_string[c->scache.ways], c->scache.linesz); in loongson2_sc_init()
1401 c->options |= MIPS_CPU_INCLUSIVE_CACHES; in loongson2_sc_init()
1406 struct cpuinfo_mips *c = &current_cpu_data; in loongson3_sc_init() local
1412 c->scache.linesz = 2 << lsize; in loongson3_sc_init()
1414 c->scache.linesz = 0; in loongson3_sc_init()
1415 c->scache.sets = 64 << ((config2 >> 8) & 15); in loongson3_sc_init()
1416 c->scache.ways = 1 + (config2 & 15); in loongson3_sc_init()
1418 scache_size = c->scache.sets * in loongson3_sc_init()
1419 c->scache.ways * in loongson3_sc_init()
1420 c->scache.linesz; in loongson3_sc_init()
1423 c->scache.waybit = 0; in loongson3_sc_init()
1425 scache_size >> 10, way_string[c->scache.ways], c->scache.linesz); in loongson3_sc_init()
1427 c->options |= MIPS_CPU_INCLUSIVE_CACHES; in loongson3_sc_init()
1437 struct cpuinfo_mips *c = &current_cpu_data; in setup_scache() local
1453 c->options |= MIPS_CPU_CACHE_CDEX_S; in setup_scache()
1461 c->scache.linesz = 64 << ((config >> 13) & 1); in setup_scache()
1462 c->scache.ways = 2; in setup_scache()
1463 c->scache.waybit= 0; in setup_scache()
1494 if (c->isa_level & (MIPS_CPU_ISA_M32R1 | MIPS_CPU_ISA_M32R2 | in setup_scache()
1499 scache_size = c->scache.ways * c->scache.sets * c->scache.linesz; in setup_scache()
1502 way_string[c->scache.ways], c->scache.linesz); in setup_scache()
1505 if (!(c->scache.flags & MIPS_CACHE_NOT_PRESENT)) in setup_scache()
1517 c->scache.waysize = scache_size / c->scache.ways; in setup_scache()
1519 c->scache.sets = scache_size / (c->scache.linesz * c->scache.ways); in setup_scache()
1522 scache_size >> 10, way_string[c->scache.ways], c->scache.linesz); in setup_scache()
1524 c->options |= MIPS_CPU_INCLUSIVE_CACHES; in setup_scache()
1646 struct cpuinfo_mips *c = &current_cpu_data; in r4k_cache_init() local
1670 if (c->dcache.linesz) in r4k_cache_init()
1672 c->dcache.sets * c->dcache.linesz - 1, in r4k_cache_init()
1731 if (c->scache.flags & MIPS_CACHE_NOT_PRESENT) in r4k_cache_init()