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

José Miguel Gonçalves jose.goncalves at inov.pt
Sun Sep 16 18:26:24 CEST 2012


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 at 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



More information about the U-Boot mailing list