Lines Matching refs:c
1134 static inline int alias_74k_erratum(struct cpuinfo_mips *c) in alias_74k_erratum() argument
1136 unsigned int imp = c->processor_id & PRID_IMP_MASK; in alias_74k_erratum()
1137 unsigned int rev = c->processor_id & PRID_REV_MASK; in alias_74k_erratum()
1189 struct cpuinfo_mips *c = ¤t_cpu_data; in probe_pcache() local
1202 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
1203 c->icache.ways = 2; in probe_pcache()
1204 c->icache.waybit = __ffs(icache_size/2); in probe_pcache()
1207 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1208 c->dcache.ways = 2; in probe_pcache()
1209 c->dcache.waybit= __ffs(dcache_size/2); in probe_pcache()
1211 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
1217 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
1218 c->icache.ways = 2; in probe_pcache()
1219 c->icache.waybit= 0; in probe_pcache()
1222 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1223 c->dcache.ways = 2; in probe_pcache()
1224 c->dcache.waybit = 0; in probe_pcache()
1226 c->options |= MIPS_CPU_CACHE_CDEX_P | MIPS_CPU_PREFETCH; in probe_pcache()
1231 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
1232 c->icache.ways = 4; in probe_pcache()
1233 c->icache.waybit= 0; in probe_pcache()
1236 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1237 c->dcache.ways = 4; in probe_pcache()
1238 c->dcache.waybit = 0; in probe_pcache()
1240 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
1241 c->options |= MIPS_CPU_PREFETCH; in probe_pcache()
1252 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
1253 c->icache.ways = 1; in probe_pcache()
1254 c->icache.waybit = 0; /* doesn't matter */ in probe_pcache()
1257 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1258 c->dcache.ways = 1; in probe_pcache()
1259 c->dcache.waybit = 0; /* does not matter */ in probe_pcache()
1261 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
1269 c->icache.linesz = 64; in probe_pcache()
1270 c->icache.ways = 2; in probe_pcache()
1271 c->icache.waybit = 0; in probe_pcache()
1274 c->dcache.linesz = 32; in probe_pcache()
1275 c->dcache.ways = 2; in probe_pcache()
1276 c->dcache.waybit = 0; in probe_pcache()
1278 c->options |= MIPS_CPU_PREFETCH; in probe_pcache()
1285 if (c->processor_id == 0x0c80U || c->processor_id == 0x0c81U || in probe_pcache()
1286 c->processor_id == 0x0c82U) { in probe_pcache()
1288 if (c->processor_id == 0x0c80U) in probe_pcache()
1292 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
1295 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
1296 c->icache.ways = 2; in probe_pcache()
1297 c->icache.waybit = __ffs(icache_size/2); in probe_pcache()
1300 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1301 c->dcache.ways = 2; in probe_pcache()
1302 c->dcache.waybit = __ffs(dcache_size/2); in probe_pcache()
1312 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
1313 c->icache.ways = 1; in probe_pcache()
1314 c->icache.waybit = 0; /* doesn't matter */ in probe_pcache()
1317 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1318 c->dcache.ways = 1; in probe_pcache()
1319 c->dcache.waybit = 0; /* does not matter */ in probe_pcache()
1321 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
1328 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
1329 c->icache.ways = 4; in probe_pcache()
1330 c->icache.waybit = __ffs(icache_size / c->icache.ways); in probe_pcache()
1333 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1334 c->dcache.ways = 4; in probe_pcache()
1335 c->dcache.waybit = __ffs(dcache_size / c->dcache.ways); in probe_pcache()
1337 c->options |= MIPS_CPU_CACHE_CDEX_P; in probe_pcache()
1338 c->options |= MIPS_CPU_PREFETCH; in probe_pcache()
1343 c->icache.linesz = 16 << ((config & CONF_IB) >> 5); in probe_pcache()
1345 c->icache.ways = 4; in probe_pcache()
1347 c->icache.ways = 2; in probe_pcache()
1348 c->icache.waybit = 0; in probe_pcache()
1351 c->dcache.linesz = 16 << ((config & CONF_DB) >> 4); in probe_pcache()
1353 c->dcache.ways = 4; in probe_pcache()
1355 c->dcache.ways = 2; in probe_pcache()
1356 c->dcache.waybit = 0; in probe_pcache()
1363 c->icache.linesz = 2 << lsize; in probe_pcache()
1365 c->icache.linesz = 0; in probe_pcache()
1366 c->icache.sets = 64 << ((config1 >> 22) & 7); in probe_pcache()
1367 c->icache.ways = 1 + ((config1 >> 16) & 7); in probe_pcache()
1368 icache_size = c->icache.sets * in probe_pcache()
1369 c->icache.ways * in probe_pcache()
1370 c->icache.linesz; in probe_pcache()
1371 c->icache.waybit = 0; in probe_pcache()
1375 c->dcache.linesz = 2 << lsize; in probe_pcache()
1377 c->dcache.linesz = 0; in probe_pcache()
1378 c->dcache.sets = 64 << ((config1 >> 13) & 7); in probe_pcache()
1379 c->dcache.ways = 1 + ((config1 >> 7) & 7); in probe_pcache()
1380 dcache_size = c->dcache.sets * in probe_pcache()
1381 c->dcache.ways * in probe_pcache()
1382 c->dcache.linesz; in probe_pcache()
1383 c->dcache.waybit = 0; in probe_pcache()
1385 c->options |= MIPS_CPU_PREFETCH; in probe_pcache()
1390 c->icache.linesz = 128; in probe_pcache()
1391 c->icache.sets = 16; in probe_pcache()
1392 c->icache.ways = 8; in probe_pcache()
1393 c->icache.flags |= MIPS_CACHE_VTAG; in probe_pcache()
1394 icache_size = c->icache.sets * c->icache.ways * c->icache.linesz; in probe_pcache()
1396 c->dcache.linesz = 128; in probe_pcache()
1397 c->dcache.ways = 8; in probe_pcache()
1398 c->dcache.sets = 8; in probe_pcache()
1399 dcache_size = c->dcache.sets * c->dcache.ways * c->dcache.linesz; in probe_pcache()
1400 c->options |= MIPS_CPU_PREFETCH; in probe_pcache()
1419 c->icache.linesz = lsize ? 2 << lsize : 0; in probe_pcache()
1421 c->icache.sets = 32 << (((config1 >> 22) + 1) & 7); in probe_pcache()
1422 c->icache.ways = 1 + ((config1 >> 16) & 7); in probe_pcache()
1424 icache_size = c->icache.sets * in probe_pcache()
1425 c->icache.ways * in probe_pcache()
1426 c->icache.linesz; in probe_pcache()
1427 c->icache.waybit = __ffs(icache_size/c->icache.ways); in probe_pcache()
1430 c->icache.flags |= MIPS_CACHE_VTAG; in probe_pcache()
1435 c->dcache.flags = 0; in probe_pcache()
1443 c->dcache.linesz = lsize ? 2 << lsize : 0; in probe_pcache()
1445 c->dcache.sets = 32 << (((config1 >> 13) + 1) & 7); in probe_pcache()
1446 c->dcache.ways = 1 + ((config1 >> 7) & 7); in probe_pcache()
1448 dcache_size = c->dcache.sets * in probe_pcache()
1449 c->dcache.ways * in probe_pcache()
1450 c->dcache.linesz; in probe_pcache()
1451 c->dcache.waybit = __ffs(dcache_size/c->dcache.ways); in probe_pcache()
1453 c->options |= MIPS_CPU_PREFETCH; in probe_pcache()
1467 !(config & CONF_SC) && c->icache.linesz != 16 && in probe_pcache()
1472 c->icache.waysize = icache_size / c->icache.ways; in probe_pcache()
1473 c->dcache.waysize = dcache_size / c->dcache.ways; in probe_pcache()
1475 c->icache.sets = c->icache.linesz ? in probe_pcache()
1476 icache_size / (c->icache.linesz * c->icache.ways) : 0; in probe_pcache()
1477 c->dcache.sets = c->dcache.linesz ? in probe_pcache()
1478 dcache_size / (c->dcache.linesz * c->dcache.ways) : 0; in probe_pcache()
1494 c->dcache.flags |= MIPS_CACHE_PINDEX; in probe_pcache()
1505 has_74k_erratum = alias_74k_erratum(c); in probe_pcache()
1520 (c->icache.waysize > PAGE_SIZE)) in probe_pcache()
1521 c->icache.flags |= MIPS_CACHE_ALIASES; in probe_pcache()
1527 c->dcache.flags |= MIPS_CACHE_PINDEX; in probe_pcache()
1531 if (has_74k_erratum || c->dcache.waysize > PAGE_SIZE) in probe_pcache()
1532 c->dcache.flags |= MIPS_CACHE_ALIASES; in probe_pcache()
1536 if (c->dcache.flags & MIPS_CACHE_PINDEX) in probe_pcache()
1537 c->dcache.flags &= ~MIPS_CACHE_ALIASES; in probe_pcache()
1545 c->icache.flags |= MIPS_CACHE_VTAG; in probe_pcache()
1551 c->icache.flags |= MIPS_CACHE_IC_F_DC; in probe_pcache()
1555 c->icache.flags |= MIPS_CACHE_IC_F_DC; in probe_pcache()
1557 c->dcache.flags &= ~MIPS_CACHE_ALIASES; in probe_pcache()
1565 c->icache.ways = 1; in probe_pcache()
1570 c->icache.flags & MIPS_CACHE_VTAG ? "VIVT" : "VIPT", in probe_pcache()
1571 way_string[c->icache.ways], c->icache.linesz); in probe_pcache()
1574 dcache_size >> 10, way_string[c->dcache.ways], in probe_pcache()
1575 (c->dcache.flags & MIPS_CACHE_PINDEX) ? "PIPT" : "VIPT", in probe_pcache()
1576 (c->dcache.flags & MIPS_CACHE_ALIASES) ? in probe_pcache()
1578 c->dcache.linesz); in probe_pcache()
1583 struct cpuinfo_mips *c = ¤t_cpu_data; in probe_vcache() local
1591 c->vcache.linesz = 2 << lsize; in probe_vcache()
1593 c->vcache.linesz = lsize; in probe_vcache()
1595 c->vcache.sets = 64 << ((config2 >> 24) & 15); in probe_vcache()
1596 c->vcache.ways = 1 + ((config2 >> 16) & 15); in probe_vcache()
1598 vcache_size = c->vcache.sets * c->vcache.ways * c->vcache.linesz; in probe_vcache()
1600 c->vcache.waybit = 0; in probe_vcache()
1601 c->vcache.waysize = vcache_size / c->vcache.ways; in probe_vcache()
1604 vcache_size >> 10, way_string[c->vcache.ways], c->vcache.linesz); in probe_vcache()
1617 struct cpuinfo_mips *c = ¤t_cpu_data; in probe_scache() local
1661 c->scache.linesz = 16 << ((config & R4K_CONF_SB) >> 22); in probe_scache()
1662 c->scache.ways = 1; in probe_scache()
1663 c->scache.waybit = 0; /* does not matter */ in probe_scache()
1670 struct cpuinfo_mips *c = ¤t_cpu_data; in loongson2_sc_init() local
1673 c->scache.linesz = 32; in loongson2_sc_init()
1674 c->scache.ways = 4; in loongson2_sc_init()
1675 c->scache.waybit = 0; in loongson2_sc_init()
1676 c->scache.waysize = scache_size / (c->scache.ways); in loongson2_sc_init()
1677 c->scache.sets = scache_size / (c->scache.linesz * c->scache.ways); in loongson2_sc_init()
1679 scache_size >> 10, way_string[c->scache.ways], c->scache.linesz); in loongson2_sc_init()
1681 c->options |= MIPS_CPU_INCLUSIVE_CACHES; in loongson2_sc_init()
1686 struct cpuinfo_mips *c = ¤t_cpu_data; in loongson3_sc_init() local
1692 c->scache.linesz = 2 << lsize; in loongson3_sc_init()
1694 c->scache.linesz = 0; in loongson3_sc_init()
1695 c->scache.sets = 64 << ((config2 >> 8) & 15); in loongson3_sc_init()
1696 c->scache.ways = 1 + (config2 & 15); in loongson3_sc_init()
1698 scache_size = c->scache.sets * in loongson3_sc_init()
1699 c->scache.ways * in loongson3_sc_init()
1700 c->scache.linesz; in loongson3_sc_init()
1703 c->scache.waybit = 0; in loongson3_sc_init()
1704 c->scache.waysize = scache_size / c->scache.ways; in loongson3_sc_init()
1706 scache_size >> 10, way_string[c->scache.ways], c->scache.linesz); in loongson3_sc_init()
1708 c->options |= MIPS_CPU_INCLUSIVE_CACHES; in loongson3_sc_init()
1718 struct cpuinfo_mips *c = ¤t_cpu_data; in setup_scache() local
1734 c->options |= MIPS_CPU_CACHE_CDEX_S; in setup_scache()
1742 c->scache.linesz = 64 << ((config >> 13) & 1); in setup_scache()
1743 c->scache.ways = 2; in setup_scache()
1744 c->scache.waybit= 0; in setup_scache()
1775 if (c->isa_level & (MIPS_CPU_ISA_M32R1 | MIPS_CPU_ISA_M32R2 | in setup_scache()
1780 scache_size = c->scache.ways * c->scache.sets * c->scache.linesz; in setup_scache()
1783 way_string[c->scache.ways], c->scache.linesz); in setup_scache()
1786 if (!(c->scache.flags & MIPS_CACHE_NOT_PRESENT)) in setup_scache()
1798 c->scache.waysize = scache_size / c->scache.ways; in setup_scache()
1800 c->scache.sets = scache_size / (c->scache.linesz * c->scache.ways); in setup_scache()
1803 scache_size >> 10, way_string[c->scache.ways], c->scache.linesz); in setup_scache()
1805 c->options |= MIPS_CPU_INCLUSIVE_CACHES; in setup_scache()
1927 struct cpuinfo_mips *c = ¤t_cpu_data; local
1953 if (c->dcache.linesz && cpu_has_dc_aliases)
1955 c->dcache.sets * c->dcache.linesz - 1,
2021 if (c->scache.flags & MIPS_CACHE_NOT_PRESENT)