[U-Boot-Users] Can anyone help?

david xo wei4work at gmail.com
Wed Jun 18 22:44:09 CEST 2008


Hi,

I'm new to U-Boot. Here I got some questions when I read the following code
in include/ppc_asm.tmpl:


#define START_GOT   \
 .section ".got2","aw"; \
.LCTOC1 = .+32768

#define END_GOT    \
 .text

#define GET_GOT    \
 bl 1f  ; \
 .text 2  ; \
0: .long .LCTOC1-1f ; \
 .text   ; \
1: mflr r14  ; \
 lwz r0,0b-1b(r14) ; \
 add r14,r0,r14 ;

#define GOT_ENTRY(NAME)  .L_  ## NAME  = . - .LCTOC1 ; .long NAME

#define GOT(NAME)  .L_  ##  NAME (r14)

1. As what I understand, after lwz r0,0b-1b(r14) , LOCTOC1-1f is stored in
r0, but I totally lost with the following instruction:

 add r14,r0,r14. What's in r14 now. Is the value of  label "1f"  the
absolute address or relative address of the code it labels or whatever else?

2. What do the #define directives do here? I noticed there are spaces before
and after "##"; what's the value of NAME in ".long NAME". In
cup/mpc8xx/start.S,  some code such as "lwz r7, GOT(_start)" invokes the
macro.

Any idea will be truly appreciated.

David
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.denx.de/pipermail/u-boot/attachments/20080618/8f936184/attachment.htm 


More information about the U-Boot mailing list