|
7.cpu/arm920t/start.S中relocate标号段代码
165 adr r0, _start /* r0 <- current position of code */
// 获取当前代码存放地址
166 ldr r1, _TEXT_BASE /* test if we run from flash or RAM */
// 获取内存存放代码地址
167 cmp r0, r1 /* don't reloc during debug */
// 检查是否需要加载
168 beq stack_setup //如果_start地址与代码段地址相同则跳转到stack_setup
169
170 ldr r2, _armboot_start // 获取stage2代码存放地址
171 ldr r3, _bss_start // 获取内存代码段起始地址
172 sub r2, r3, r2 /* r2 <- size of armboot */
// 计算stage2代码长度
173 add r2, r0, r2 /* r2 <- source end address */
// 计算stage2代码结束地址
.global _armboot_setup
_armboot_setup:.word _start
这段代码中170行中得到的_start标号存放的地址吧,怎么会是第二段代码的存放地址?? 总之,详细说下这句怎么理解?R2得到的是什么吧? |
|