[U-Boot] [PATCH v2 01/11] ARM: fix relocation on ARM926EJS

José Miguel Gonçalves
2012-09-16T16:26:24Z

On 09/16/2012 04:36 PM, Marek Vasut wrote:
> Dear Jos? Miguel Gon?alves,
>
>> On 09/16/2012 11:06 AM, Marek Vasut wrote:
>>> Dear Jos? Miguel Gon?alves,
>>>
>>>> On 09/15/2012 07:03 PM, Marek Vasut wrote:
>>>>> Dear Jos? Miguel Gon?alves,
>>>>>
>>>>>> Jumping to board_init_r is not performed due to a bug on address
>>>>>> computation.
>>>>> Is your CONFIG_SYS_TEXT_BASE configured correctly? I don't detect any
>>>>> misbehavior on my arm926 boards.
>>>> Maybe because you are not using it to build an SPL?
>>> I do ... and I use CONFIG_SPL_TEXT_BASE properly .
>>>> Please check the same chunk of code in other start.S for arm1176 and
>>>> armv7. They have the same code that I put for arm926ejs.
>>> Please wait and please first explain what is the issue.
>> The issue is what I've explained in the patch comments.
> "Jumping to board_init_r is not performed due to a bug on address computation."
>
> Ok, I don't know how to replicate the bug from this comment or what effects it
> causes or ... well, anything. So please, try to be more elaborate in your patch
> description next time. Anyway ..

My bad. I should be more explicit on the patch description.

>> Without this
>> change the code never reaches board_init_r in the SPL and I think I have
>> all the configurations correctly set.
> I wonder why you'd ever want to reach board_init_r in the SPL. SPL is there only
> to load the real U-Boot from whatever media, so you usually use either NAND SPL
> or something like that.
>
> What do you boot the rest from ?

Both SPL and U-Boot are in NAND Flash.

The board's SPL code in board/boardcon/mini2416/mini2416_spl.c that
needs this patch was based on existing code from
arch/arm/cpu/arm926ejs/davinci/spl.c and arm/cpu/armv7/omap-common/spl.c

The need to call relocate_code() in board_init_f() is explained on the
SPL source comment, i.e., only to initialize .bss before we could use it
in board_init_r() (in the serial driver initialization).

>
>> If the bug is not from here please
>> suggest me what I need to change in the configuration in order to
>> correctly boot my board.
>>
>>>>>> Relocation offsets are not needed when building SPL.
>>>>> Do they cause any trouble?
>>>> No! Just not needed.
>>>>
>>>>>> Signed-off-by: Jos? Miguel Gon?alves <jose.goncalves@inov.pt>
>>>>>> ---
>>>>>>
>>>>>> Changes for v2:
>>>>>> - None
>>>>>>
>>>>>> ---
>>>>>>
>>>>>> arch/arm/cpu/arm926ejs/start.S | 4 +++-
>>>>>> 1 file changed, 3 insertions(+), 1 deletion(-)
>>>>>>
>>>>>> diff --git a/arch/arm/cpu/arm926ejs/start.S
>>>>>> b/arch/arm/cpu/arm926ejs/start.S index 6f05f1a..2da5342 100644
>>>>>> --- a/arch/arm/cpu/arm926ejs/start.S
>>>>>> +++ b/arch/arm/cpu/arm926ejs/start.S
>>>>>>
>>>>>> @@ -325,7 +325,7 @@ _nand_boot_ofs:
>>>>>> .word nand_boot
>>>>>>
>>>>>> #else
>>>>>>
>>>>>> ldr r0, _board_init_r_ofs
>>>>>>
>>>>>> - ldr r1, _TEXT_BASE
>>>>>> + adr r1, _start
>>>>>>
>>>>>> add lr, r0, r1
>>>>>> add lr, lr, r9
>>>>>> /* setup parameters for board_init_r */
>>>>>>
>>>>>> @@ -338,12 +338,14 @@ _board_init_r_ofs:
>>>>>> .word board_init_r - _start
>>>>>>
>>>>>> #endif
>>>>>>
>>>>>> +#ifndef CONFIG_SPL_BUILD
>>>>>>
>>>>>> _rel_dyn_start_ofs:
>>>>>> .word __rel_dyn_start - _start
>>>>>>
>>>>>> _rel_dyn_end_ofs:
>>>>>> .word __rel_dyn_end - _start
>>>>>>
>>>>>> _dynsym_start_ofs:
>>>>>> .word __dynsym_start - _start
>>>>>>
>>>>>> +#endif
>>>>>>
>>>>>> /*
>>>>>>
>>>>>> ******************************************************************
>>>>>> *** ****
>>>>> Best regards,
>>>>> Marek Vasut
>>>> Best regards,
>>>> Jos? Gon?alves
>>> Best regards,
>>> Marek Vasut
>> Best regards,
>> Jos? Gon?alves