Skip to contentSkip to conversation

another question of relocate_code

U-Boot-Users YanMin Qiao 2 participants 3 messages Jan 4, 2003

lore
Share & tools
lore
#0 lore raw

Hi all:

<u-boot>/cpu/mpc8xx/start.S

....
relocate_code:

    mr    r1,  r3        /* Set new stack pointer        */
    mr    r9,  r4        /* Save copy of Global Data pointer    */
    mr    r10, r5        /* Save copy of Destination Address    */
....
    sub    r15, r10, r4

    /* First our own GOT */
    add    r14, r14, r15
    /* the the one used by the C code */
    add    r30, r30, r15
              ^^^

....

I have followed the code to the end of board_init_r(). I didn't figured out where r30 is used
as mentioned.

Thanks

Best regards

#1 lore raw
Quoted 17 lines · In message <[email protected]> you wrote:

Hi all:

<u-boot>/cpu/mpc8xx/start.S

....
relocate_code:

    mr    r1,  r3        /* Set new stack pointer        */
    mr    r9,  r4        /* Save copy of Global Data pointer    */
    mr    r10, r5        /* Save copy of Destination Address    */
....
    sub    r15, r10, r4

    /* First our own GOT */
    add    r14, r14, r15
    /* the the one used by the C code */
    add    r30, r30, r15
              ^^^
Quoted 5 lines

....

I have followed the code to the end of board_init_r(). I didn't figured out where r30 is used
as mentioned.

Which part of this section from the README didn't you understand?

... we are restricted by the
relevant (E)ABI specifications for the current architecture, and by GCC's implementation.

For PowerPC, the following registers have specific use:
R1: stack pointer
R2: TOC pointer
R3-R4: parameter passing and return values
R5-R10: parameter passing
R13: small data area pointer
R30: GOT pointer
R31: frame pointer

(U-Boot also uses R14 as internal GOT pointer.)

If you want to know all the ugly details I recommend to read the (E)ABI specifications and the relevant parts of the GCC source code.

Best regards,

Wolfgang Denk

Signature · 5 lines
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-4596-87  Fax: (+49)-8142-4596-88  Email: wd at denx.de
Real computer scientists despise the idea of actual  hardware.  Hard-
ware has limitations, software doesn't. It's a real shame that Turing
machines are so poor at I/O.
#2 lore raw
Quoted 43 lines · Wolfgang Denk
Quoted 17 lines · In message <[email protected]> you wrote:

Hi all:

<u-boot>/cpu/mpc8xx/start.S

....
relocate_code:

   mr    r1,  r3        /* Set new stack pointer        */
   mr    r9,  r4        /* Save copy of Global Data pointer    */
   mr    r10, r5        /* Save copy of Destination Address    */

....
sub r15, r10, r4

   /* First our own GOT */
   add    r14, r14, r15
   /* the the one used by the C code */
   add    r30, r30, r15
             ^^^
Quoted 7 lines

....

I have followed the code to the end of board_init_r(). I didn't figured out where r30 is used
as mentioned.

Which part of this section from the README didn't you understand?

... we are restricted by the
relevant (E)ABI specifications for the current architecture, and by GCC's implementation.

For PowerPC, the following registers have specific use:
R1: stack pointer
R2: TOC pointer
R3-R4: parameter passing and return values
R5-R10: parameter passing
R13: small data area pointer
R30: GOT pointer
R31: frame pointer

Quoted 11 lines

(U-Boot also uses R14 as internal GOT pointer.)

If you want to know all the ugly details I recommend to read the (E)ABI specifications and the relevant parts of the GCC source code.

Best regards,

Wolfgang Denk

thanks for the mention of eabi :)

Best regards