返回信息流u-boot 代码中有下面最后4句(标记部分)不懂,求教,谢谢
/* Alignment exception. */ // 对齐中断
. = 0x600
Alignment:
EXCEPTION_PROLOG // ppc_asm.tmpl的宏定义,异常入口代码,可运行在无地址转换功能时
mfspr r4,DAR
stw r4,_DAR(r21) // _DAR(180) _DSISR(184) _LINK(160) 在include/ppc_defs.h中定义
mfspr r5,DSISR // DSISR(0x012) include/asm_ppc.h
stw r5,_DSISR(r21)
addi r3,r1,STACK_FRAME_OVERHEAD
li r20,MSR_KERNEL
rlwimi r20,r23,0,16,16 /* copy EE bit from saved MSR */
rlwimi r20,r23,0,25,25 /* copy IP bit from saved MSR */
lwz r6,GOT(transfer_to_handler) // lwz r6, .L_transfer_to_handler(r14) ppc_asm.tmpl定义GOT(NAME)
mtlr r6
blrl
.L_Alignment:
.long AlignmentException - _start + EXC_OFF_SYS_RESET
.long int_return - _start + EXC_OFF_SYS_RESE
主要上面的标示部分, 尤其是最后4句是干嘛用的,不懂。
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #4786同步于 2009/5/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖
求教:U-Boot 汇编代码部分 (cpu -- PowerPC)
yihang
2009/5/13镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
字面上看,是把这段代码(transfer_to_handler)的偏移地址装到r6里面
然后将将r6的内容装入spr 8寄存器(LR-link register)当中
PS:网上有关于GOT的解释,没太细看,需要的话,你可以再查查
blrl
.L_Alignment:
.long AlignmentException - _start + EXC_OFF_SYS_RESET
.long int_return - _start + EXC_OFF_SYS_RESE
最主要是这四句不懂,后面两个地址干嘛用的不懂。
GOT解释正在分析