返回信息流请教一下u-boot中下列语句的作用。 下面的代码搬运relocate_code中刚搬运完跳转到ram中执行代码,不是很懂:
尤其li r0, __got2_entries@sectoff@l 完全不理解__got2_entries@sectoff啥意思
------------- 代码 --------------------
in_ram:
/*
* Relocation Function, r14 point to got2+0x8000
*
* Adjust got2 pointers, no need to check for 0, this code
* already puts a few entries in the table.
*/
li r0,__got2_entries@sectoff@l
la r3,GOT(_GOT2_TABLE_)
lwz r11,GOT(_GOT2_TABLE_)
mtctr r0
sub r11,r3,r11
addi r3,r3,-4
1: lwzu r0,4(r3)
add r0,r0,r11
stw r0,0(r3)
bdnz 1b
/*
* Now adjust the fixups and the pointers to the fixups
* in case we need to move ourselves again.
*/
2: li r0,__fixup_entries@sectoff@l
lwz r3,GOT(_FIXUP_TABLE_)
cmpwi r0,0
mtctr r0
addi r3,r3,-4
beq 4f
3: lwzu r4,4(r3)
lwzux r0,r4,r11
add r0,r0,r11
stw r10,0(r3)
stw r0,0(r4)
bdnz 3b
4:
clear_bss:
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #5261同步于 2009/7/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖
请教u-boot代码语句含义
yihang
2009/7/2镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
【 在 hobby 的大作中提到: 】
: 不懂帮顶
: 话说关于start.S代码分析的资料,关于arm的很多,ppc的不怎么能找着(而且相比之下ppc的汇编看着的确更复杂啊~)
正在分析的正是ppc的,start.S分析了大部分,不过具体有些细节还不是很懂。像GOT, 以及0x600以后的异常处理过程不是很懂,大致能猜出来,但是代码这样写的思想是什么就完全不懂了
当初对着汇编指令手册,一条条语句注释,一个start.S文件断断续续花了半个多月才注释完指令,但是整体意思依然糊涂。
上面实现更新got的,__fixup_entries表项,以使位置无关。
关键的是,__fixup_entries@sectoff找不到解释。
有人说是是汇编器as的关键词 section offset,还是不清楚