为什么u-boot 2015可以在重定位代码执行之前使用全局变量

时间:2018-10-21 06:13:11

标签: linux assembly u-boot

我几乎正在阅读飞思卡尔i.mx6的u-boot,但是我很困惑。 在此文件“ crt0.s (u-boot-imx\2015.04-r0\git\arch\arm\lib)”中,“ board_init_f”在“ relocate_code”和“ board_init_f (board_f.c u-boot-imx\2015.04-r0\git\common)”使用全局变量“ init_sequence_f”之前被调用。 / p>

在反汇编中

17806280 <board_init_f>:
17806280:   e92d4010    push    {r4, lr}
17806284:   e3a02000    mov r2, #0
17806288:   e5890004    str r0, [r9, #4]    //wangc gd->flags = boot_flags;
1780628c:   e5892020    str r2, [r9, #32]   //gd->have_console = 0;
17806290:   e59f000c    ldr r0, [pc, #12]   ; 178062a4 <board_init_f+0x24>
17806294:   eb00beec    bl  17835e4c <initcall_run_list>
17806298:   e3500000    cmp r0, #0
1780629c:   08bd8010    popeq   {r4, pc}
178062a0:   eb00c573    bl  17837874 <hang>
178062a4:   1784c28c    strne   ip, [r4, ip, lsl #5]

地址1784c28c

1784c28c <init_sequence_f>: 
1784c28c:   17805f00    
1784c290:   17806190    
1784c294:   1780603c
....

enter image description here

我在哪里弄错了?

0 个答案:

没有答案