[U-Boot] [PATCH 2/2] [NEXT] arm926ejs: reduce code size with -msingle-pic-base

Ben Gardiner
2010-09-24T13:38:29Z

On Thu, Sep 23, 2010 at 5:30 PM, Albert ARIBAUD <albert.aribaud@free.fr> wrote:
> Watch out: 'sl' is always 'r10': those are alias names of the register; I
> specify both names because depending on the tool you use, you might see
> either name. But the pic base, i.e. the register which holds the address of
> the GOT, is not necessarily sl! It can can be r10 *or* r9, depending on the
> toolchain and options.
>
> Here your excepts show that r9 remains constant (and, I suspect, its value
> is the address of the symbol __got_base) while r10 varies; r9 is the pic
> base. Which is lucky because r10 is trashed by the loop that goes through
> init_sequence and runs each of the functions it points to.

Ok :) So i showed that the alias is true. :) -- Thanks for the info,
I'll need to do some research into what the pic base is with this
toolchain.

>> There is no arch_cpu_init or board_early_init_f; timer_init is at
>> 0xc1091e6c. So it is timer_init which is being called above.
>>
>> The call to timer_init completes successfully; the next function
>> pointer dereferenced and called is 0xc1087e04 == env_init. That call
>> completes successfully. The next is 0xc10804f8 == init_baudrate; it
>> completes successfully. The next call is 0xc108119c == serial_init; it
>> completes successfully. The next is 0xc1086550 == console_init_f; it
>> completes successfully. The next is 0xc10804d0 == display_banner; ?it
>> completes successfully. They all did.
>
> Ok, so all this goes fine, yet you do not see the banner displayed?

Correct.

>> Execution reaches the call to
>> relocate_code and enters; the last instruction I am able to
>> single-step is the 'ldr ? ? r10, _got_base' in the following lines
>> from your patch:
>
> What happens when you single-step through it? Any kind of error message, or
> does the target simply not respond any more?

No output on the serial console or from the debugger software. As you
say, the target simply does not respond anymore.

>>> Thanks again for your help in testing my patches!
>>
>> My pleasure. I hope we can get them working on the da850evm.
>
> We certainly will. For me to reproduce your SW setting and build exactly the
> same binary as you do, can you confirm that you are again using the 2009q1
> toolchain, and indicate the exact command line you use to build your target?

It was the 2009q1 toolchain.

export CROSS_COMPILE=arm-none-linux-gnueabi-
export PATH=/opt/codesourcery-arm-none-eabi-2009q1/bin/:${PATH}
export ARCH=arm
make mrproper ; make da850evm_config ; make -j9 all

Best Regards,
Ben Gardiner

---
Nanometrics Inc.