Lines Matching refs:c
899 static inline int alias_74k_erratum(struct cpuinfo_mips *c) in alias_74k_erratum() argument
901 unsigned int imp = c->processor_id & PRID_IMP_MASK; in alias_74k_erratum()
902 unsigned int rev = c->processor_id & PRID_REV_MASK; in alias_74k_erratum()
942 struct cpuinfo_mips *c = ¤t_cpu_data; in probe_pcache() local
955 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
956 c->icache.ways = 2; in probe_pcache()
957 c->icache.waybit = __ffs(icache_size/2); in probe_pcache()
960 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
961 c->dcache.ways = 2; in probe_pcache()
962 c->dcache.waybit= __ffs(dcache_size/2); in probe_pcache()
964 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
970 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
971 c->icache.ways = 2; in probe_pcache()
972 c->icache.waybit= 0; in probe_pcache()
975 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
976 c->dcache.ways = 2; in probe_pcache()
977 c->dcache.waybit = 0; in probe_pcache()
979 c->options |= MIPS_CPU_CACHE_CDEX_P | MIPS_CPU_PREFETCH; in probe_pcache()
984 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
985 c->icache.ways = 4; in probe_pcache()
986 c->icache.waybit= 0; in probe_pcache()
989 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
990 c->dcache.ways = 4; in probe_pcache()
991 c->dcache.waybit = 0; in probe_pcache()
993 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
994 c->options |= MIPS_CPU_PREFETCH; in probe_pcache()
1005 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
1006 c->icache.ways = 1; in probe_pcache()
1007 c->icache.waybit = 0; /* doesn't matter */ in probe_pcache()
1010 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1011 c->dcache.ways = 1; in probe_pcache()
1012 c->dcache.waybit = 0; /* does not matter */ in probe_pcache()
1014 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
1021 c->icache.linesz = 64; in probe_pcache()
1022 c->icache.ways = 2; in probe_pcache()
1023 c->icache.waybit = 0; in probe_pcache()
1026 c->dcache.linesz = 32; in probe_pcache()
1027 c->dcache.ways = 2; in probe_pcache()
1028 c->dcache.waybit = 0; in probe_pcache()
1030 c->options |= MIPS_CPU_PREFETCH; in probe_pcache()
1037 if (c->processor_id == 0x0c80U || c->processor_id == 0x0c81U || in probe_pcache()
1038 c->processor_id == 0x0c82U) { in probe_pcache()
1040 if (c->processor_id == 0x0c80U) in probe_pcache()
1044 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
1047 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
1048 c->icache.ways = 2; in probe_pcache()
1049 c->icache.waybit = __ffs(icache_size/2); in probe_pcache()
1052 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1053 c->dcache.ways = 2; in probe_pcache()
1054 c->dcache.waybit = __ffs(dcache_size/2); in probe_pcache()
1064 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
1065 c->icache.ways = 1; in probe_pcache()
1066 c->icache.waybit = 0; /* doesn't matter */ in probe_pcache()
1069 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1070 c->dcache.ways = 1; in probe_pcache()
1071 c->dcache.waybit = 0; /* does not matter */ in probe_pcache()
1073 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
1080 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
1081 c->icache.ways = 4; in probe_pcache()
1082 c->icache.waybit = __ffs(icache_size / c->icache.ways); in probe_pcache()
1085 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1086 c->dcache.ways = 4; in probe_pcache()
1087 c->dcache.waybit = __ffs(dcache_size / c->dcache.ways); in probe_pcache()
1089 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
1090 c->options |= MIPS_CPU_PREFETCH; in probe_pcache()
1095 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
1097 c->icache.ways = 4; in probe_pcache()
1099 c->icache.ways = 2; in probe_pcache()
1100 c->icache.waybit = 0; in probe_pcache()
1103 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1105 c->dcache.ways = 4; in probe_pcache()
1107 c->dcache.ways = 2; in probe_pcache()
1108 c->dcache.waybit = 0; in probe_pcache()
1115 c->icache.linesz = 2 << lsize; in probe_pcache()
1117 c->icache.linesz = 0; in probe_pcache()
1118 c->icache.sets = 64 << ((config1 >> 22) & 7); in probe_pcache()
1119 c->icache.ways = 1 + ((config1 >> 16) & 7); in probe_pcache()
1120 icache_size = c->icache.sets * in probe_pcache()
1121 c->icache.ways * in probe_pcache()
1122 c->icache.linesz; in probe_pcache()
1123 c->icache.waybit = 0; in probe_pcache()
1127 c->dcache.linesz = 2 << lsize; in probe_pcache()
1129 c->dcache.linesz = 0; in probe_pcache()
1130 c->dcache.sets = 64 << ((config1 >> 13) & 7); in probe_pcache()
1131 c->dcache.ways = 1 + ((config1 >> 7) & 7); in probe_pcache()
1132 dcache_size = c->dcache.sets * in probe_pcache()
1133 c->dcache.ways * in probe_pcache()
1134 c->dcache.linesz; in probe_pcache()
1135 c->dcache.waybit = 0; in probe_pcache()
1140 c->icache.linesz = 128; in probe_pcache()
1141 c->icache.sets = 16; in probe_pcache()
1142 c->icache.ways = 8; in probe_pcache()
1143 c->icache.flags |= MIPS_CACHE_VTAG; in probe_pcache()
1144 icache_size = c->icache.sets * c->icache.ways * c->icache.linesz; in probe_pcache()
1146 c->dcache.linesz = 128; in probe_pcache()
1147 c->dcache.ways = 8; in probe_pcache()
1148 c->dcache.sets = 8; in probe_pcache()
1149 dcache_size = c->dcache.sets * c->dcache.ways * c->dcache.linesz; in probe_pcache()
1150 c->options |= MIPS_CPU_PREFETCH; in probe_pcache()
1169 c->icache.linesz = lsize ? 2 << lsize : 0; in probe_pcache()
1171 c->icache.sets = 32 << (((config1 >> 22) + 1) & 7); in probe_pcache()
1172 c->icache.ways = 1 + ((config1 >> 16) & 7); in probe_pcache()
1174 icache_size = c->icache.sets * in probe_pcache()
1175 c->icache.ways * in probe_pcache()
1176 c->icache.linesz; in probe_pcache()
1177 c->icache.waybit = __ffs(icache_size/c->icache.ways); in probe_pcache()
1180 c->icache.flags |= MIPS_CACHE_VTAG; in probe_pcache()
1185 c->dcache.flags = 0; in probe_pcache()
1193 c->dcache.linesz = lsize ? 2 << lsize : 0; in probe_pcache()
1195 c->dcache.sets = 32 << (((config1 >> 13) + 1) & 7); in probe_pcache()
1196 c->dcache.ways = 1 + ((config1 >> 7) & 7); in probe_pcache()
1198 dcache_size = c->dcache.sets * in probe_pcache()
1199 c->dcache.ways * in probe_pcache()
1200 c->dcache.linesz; in probe_pcache()
1201 c->dcache.waybit = __ffs(dcache_size/c->dcache.ways); in probe_pcache()
1203 c->options |= MIPS_CPU_PREFETCH; in probe_pcache()
1217 !(config & CONF_SC) && c->icache.linesz != 16 && in probe_pcache()
1222 c->icache.waysize = icache_size / c->icache.ways; in probe_pcache()
1223 c->dcache.waysize = dcache_size / c->dcache.ways; in probe_pcache()
1225 c->icache.sets = c->icache.linesz ? in probe_pcache()
1226 icache_size / (c->icache.linesz * c->icache.ways) : 0; in probe_pcache()
1227 c->dcache.sets = c->dcache.linesz ? in probe_pcache()
1228 dcache_size / (c->dcache.linesz * c->dcache.ways) : 0; in probe_pcache()
1242 c->dcache.flags |= MIPS_CACHE_PINDEX; in probe_pcache()
1252 has_74k_erratum = alias_74k_erratum(c); in probe_pcache()
1265 (c->icache.waysize > PAGE_SIZE)) in probe_pcache()
1266 c->icache.flags |= MIPS_CACHE_ALIASES; in probe_pcache()
1272 c->dcache.flags |= MIPS_CACHE_PINDEX; in probe_pcache()
1276 if (has_74k_erratum || c->dcache.waysize > PAGE_SIZE) in probe_pcache()
1277 c->dcache.flags |= MIPS_CACHE_ALIASES; in probe_pcache()
1286 c->icache.flags |= MIPS_CACHE_VTAG; in probe_pcache()
1290 c->icache.flags |= MIPS_CACHE_IC_F_DC; in probe_pcache()
1298 c->icache.ways = 1; in probe_pcache()
1303 c->icache.flags & MIPS_CACHE_VTAG ? "VIVT" : "VIPT", in probe_pcache()
1304 way_string[c->icache.ways], c->icache.linesz); in probe_pcache()
1307 dcache_size >> 10, way_string[c->dcache.ways], in probe_pcache()
1308 (c->dcache.flags & MIPS_CACHE_PINDEX) ? "PIPT" : "VIPT", in probe_pcache()
1309 (c->dcache.flags & MIPS_CACHE_ALIASES) ? in probe_pcache()
1311 c->dcache.linesz); in probe_pcache()
1324 struct cpuinfo_mips *c = ¤t_cpu_data; in probe_scache() local
1368 c->scache.linesz = 16 << ((config & R4K_CONF_SB) >> 22); in probe_scache()
1369 c->scache.ways = 1; in probe_scache()
1370 c->scache.waybit = 0; /* does not matter */ in probe_scache()
1377 struct cpuinfo_mips *c = ¤t_cpu_data; in loongson2_sc_init() local
1380 c->scache.linesz = 32; in loongson2_sc_init()
1381 c->scache.ways = 4; in loongson2_sc_init()
1382 c->scache.waybit = 0; in loongson2_sc_init()
1383 c->scache.waysize = scache_size / (c->scache.ways); in loongson2_sc_init()
1384 c->scache.sets = scache_size / (c->scache.linesz * c->scache.ways); in loongson2_sc_init()
1386 scache_size >> 10, way_string[c->scache.ways], c->scache.linesz); in loongson2_sc_init()
1388 c->options |= MIPS_CPU_INCLUSIVE_CACHES; in loongson2_sc_init()
1393 struct cpuinfo_mips *c = ¤t_cpu_data; in loongson3_sc_init() local
1399 c->scache.linesz = 2 << lsize; in loongson3_sc_init()
1401 c->scache.linesz = 0; in loongson3_sc_init()
1402 c->scache.sets = 64 << ((config2 >> 8) & 15); in loongson3_sc_init()
1403 c->scache.ways = 1 + (config2 & 15); in loongson3_sc_init()
1405 scache_size = c->scache.sets * in loongson3_sc_init()
1406 c->scache.ways * in loongson3_sc_init()
1407 c->scache.linesz; in loongson3_sc_init()
1410 c->scache.waybit = 0; in loongson3_sc_init()
1412 scache_size >> 10, way_string[c->scache.ways], c->scache.linesz); in loongson3_sc_init()
1414 c->options |= MIPS_CPU_INCLUSIVE_CACHES; in loongson3_sc_init()
1424 struct cpuinfo_mips *c = ¤t_cpu_data; in setup_scache() local
1440 c->options |= MIPS_CPU_CACHE_CDEX_S; in setup_scache()
1447 c->scache.linesz = 64 << ((config >> 13) & 1); in setup_scache()
1448 c->scache.ways = 2; in setup_scache()
1449 c->scache.waybit= 0; in setup_scache()
1480 if (c->isa_level & (MIPS_CPU_ISA_M32R1 | MIPS_CPU_ISA_M32R2 | in setup_scache()
1485 scache_size = c->scache.ways * c->scache.sets * c->scache.linesz; in setup_scache()
1488 way_string[c->scache.ways], c->scache.linesz); in setup_scache()
1491 if (!(c->scache.flags & MIPS_CACHE_NOT_PRESENT)) in setup_scache()
1503 c->scache.waysize = scache_size / c->scache.ways; in setup_scache()
1505 c->scache.sets = scache_size / (c->scache.linesz * c->scache.ways); in setup_scache()
1508 scache_size >> 10, way_string[c->scache.ways], c->scache.linesz); in setup_scache()
1510 c->options |= MIPS_CPU_INCLUSIVE_CACHES; in setup_scache()
1632 struct cpuinfo_mips *c = ¤t_cpu_data; in r4k_cache_init() local
1656 if (c->dcache.linesz && cpu_has_dc_aliases) in r4k_cache_init()
1658 c->dcache.sets * c->dcache.linesz - 1, in r4k_cache_init()