免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1044 | 回复: 0

[硬件及驱动] MPC8247跑Linux内核,在setup_common_caches中挂死 [复制链接]

论坛徽章:
0
发表于 2015-09-16 11:34 |显示全部楼层
MPC8247属于MPC8272 family,因此配置文件选用mpc8272_ads_defconfig,内核则尝试了4.2、2.6.32、2.6.19多个版本。
在cpu_setup_6xx.S文件中的setup_common_caches挂死。

setup_common_caches:
        mfspr        r11,SPRN_HID0
        andi.        r0,r11,HID0_DCE
        ori        r11,r11,HID0_ICE|HID0_DCE
        ori        r8,r11,HID0_ICFI
       
        bne        1f                          /* don't invalidate the D-cache */
        ori        r8,r8,HID0_DCI          /* unless it wasn't enabled */
       
1:        sync
        //下面这条指令挂死
        mtspr        SPRN_HID0,r8                //YY r8->SPRN_HID0 /* enable and invalidate caches */
        sync
        mtspr        SPRN_HID0,r11                /* enable caches */
        sync
        isync
        blr

分析导致挂死的直接原因是:开启了data cache。
如果不开启data cache则在head_32.S中的turn_on_mmu挂死。
因为多个版本的Linux内核代码中,setup_common_caches代码都是一致的、都开启了data cache。那么开启data cache挂死的原因就更为奇怪了。

希望大家可以讨论下,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP