免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1759 | 回复: 0
打印 上一主题 下一主题

请教u-boot中start.S文件执行过程的疑问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-15 10:45 |只看该作者 |倒序浏览
大家好,也许很多人已经读过u-boot的start.S代码,主要是用来为u-boot的第一阶段做准备的。

我使用的u-boot是u-boot-2008.10,其实那份start.S和老版本的差不多,经过make xxxx_config 和 make all 后成功生成了uboot.bin。
我在cpu/arm920t/ 中执行arm-linux-objdump -D start.o > file (这样做不知道对不对阿) 想看看其过程

在start.S中肯定有这么一句:
bl        cpu_init_crit
但在那份file文件中却对应的是这么一句:
  b8:        eb00006d         bl        274 <software_interrupt+0x14>


好像是跳转到  software_interrupt  去了。对于我的cpu_init_crit是这样对应的:
000001bc <cpu_init_crit>:
1bc:        e3a00000         mov        r0, #0        ; 0x0
1c0:        ee070f17         mcr        15, 0, r0, cr7, cr7, {0}
1c4:        ee080f17         mcr        15, 0, r0, cr8, cr7, {0}
....................(省略)


我看它跳转到software_interrupt+0x14,然后就找一下对应的代码,如下(比较长阿):
00000260 <software_interrupt>:
260:        e51fd224         ldr        sp, [pc, #-548]        ; 44 <_armboot_start>
264:        e24dd802         sub        sp, sp, #131072        ; 0x20000
268:        e24dd803         sub        sp, sp, #196608        ; 0x30000
26c:        e24dd088         sub        sp, sp, #136        ; 0x88
270:        e58de000         str        lr, [sp]
274:        e14fe000         mrs        lr, SPSR
278:        e58de004         str        lr, [sp, #4]
27c:        e3a0d013         mov        sp, #19        ; 0x13
280:        e169f00d         msr        SPSR_fc, sp
284:        e1a0e00f         mov        lr, pc
288:        e1b0f00e         movs        pc, lr
28c:        e24dd048         sub        sp, sp, #72        ; 0x48
290:        e88d1fff         stmia        sp, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip}
294:        e51f2258         ldr        r2, [pc, #-600]        ; 44 <_armboot_start>
298:        e2422802         sub        r2, r2, #131072        ; 0x20000
29c:        e2422803         sub        r2, r2, #196608        ; 0x30000
2a0:        e2422088         sub        r2, r2, #136        ; 0x88
2a4:        e892000c         ldmia        r2, {r2, r3}
2a8:        e28d0048         add        r0, sp, #72        ; 0x48
2ac:        e28d5034         add        r5, sp, #52        ; 0x34
2b0:        e1a0100e         mov        r1, lr
2b4:        e885000f         stmia        r5, {r0, r1, r2, r3}
2b8:        e1a0000d         mov        r0, sp
2bc:        ebfffffe         bl        2bc <software_interrupt+0x5c>


整个software_interrupt代码贴完了,都感觉没看到有某条指令会帮助跳回到cpu_init_crit中。
请问这是什么原因呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP