Chinaunix首页 | 论坛 | 博客
  • 博客访问: 346443
  • 博文数量: 102
  • 博客积分: 3140
  • 博客等级: 中校
  • 技术积分: 680
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-28 11:44
个人简介

开阔未来

文章分类

全部博文(102)

文章存档

2015年(10)

2014年(1)

2013年(1)

2012年(4)

2011年(8)

2010年(24)

2009年(51)

2008年(3)

我的朋友

分类: LINUX

2009-05-26 18:02:27

在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) |
给主人留下些什么吧!~~