- 论坛徽章:
- 0
|
.globl _start
_start: b reset
ldr pc, _undefined_instruction
ldr pc, _software_interrupt
ldr pc, _prefetch_abort
ldr pc, _data_abort
ldr pc, _not_used
ldr pc, _irq
ldr pc, _fiq
_TEXT_BASE:
.word TEXT_BASE
.globl _armboot_start
_armboot_start:
.word _start
.globl _bss_start
_bss_start:
.word __bss_start
.globl _bss_end
_bss_end:
.word _end
adr r0, _start /* r0 <- current position of code */
ldr r1, _TEXT_BASE /* test if we run from flash or RAM */
cmp r0, r1 /* don't reloc during debug */
beq stack_setup
ldr r2, _armboot_start
ldr r3, _bss_start
这是uboot中的一段启动代码,现在adr r0, _start 和 ldr r2, _armboot_start两句话读到的值为什么不同啊。ro中的值为0,r2中的值为0x000200000(貌似是连接时指定的值和 ldr r1, _TEXT_BASE读到的值一样)
那位高人指点一下,我觉得r0和r2中的值应该是一样才啊,不知道为什么会这样。 |
|