在MIPS uboot开发的过程中,在相应的config文件中,需要定义cache size:
#define CFG_DCACHE_SIZE 32768
#define CFG_ICACHE_SIZE 32768
由于mips的cache size 在cp中可以读得,我们可以读取寄存器,然后计算。
本文是巧用linux内mips arch下的分析cache函数probe_pcache来计算cache size:
此函数实现如下:
static void __cpuinit probe_pcache(void)
{
struct cpuinfo_mips *c = ¤t_cpu_data;
unsigned int config = read_c0_config();
unsigned int prid = read_c0_prid();
unsigned long config1;
unsigned int lsize;
switch (c->cputype) {
case CPU_R4600: /* QED style two way caches? */
case CPU_R4700:
case CPU_R5000:
case CPU_NEVADA:
icache_size = 1 << (12 + ((config & CONF_IC) >> 9));
c->icache.linesz = 16 << ((config & CONF_IB) >> 5);
c->icache.ways = 2;
c->icache.waybit = __ffs(icache_size/2);
dcache_size = 1 << (12 + ((config & CONF_DC) >> 6));
c->dcache.linesz = 16 << ((config & CONF_DB) >> 4);
c->dcache.ways = 2;
c->dcache.waybit= __ffs(dcache_size/2);
c->options |= MIPS_CPU_CACHE_CDEX_P;
break;
.....
}
我们只需参考此函数实现简单的得到cache size 的函数
阅读(1063) | 评论(0) | 转发(0) |