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

José Miguel Gonçalves jose.goncalves at inov.pt
Mon Sep 17 10:34:52 CEST 2012


On 09/17/2012 07:28 AM, Christian Riesch wrote:
> Hi,
>
> On Sun, Sep 16, 2012 at 5:36 PM, Marek Vasut <marex at denx.de> 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 ..
> Same for me - I have no idea what you are trying to fix here. In my
> SPL configuration, _TEXT_BASE and _start point to the same location,
> so please explain why they are different on your board.

They are different because of how start.S is implemented in arm926ejs.

In my SPL map file I see:

.text           0x0000000000000000      0xc24
  arch/arm/cpu/arm926ejs/start.o(.text)
  .text          0x0000000000000000      0x120 
arch/arm/cpu/arm926ejs/start.o
                 0x0000000000000000                _start
                 0x0000000000000040                _TEXT_BASE
                 0x0000000000000044                _bss_start_ofs
                 0x0000000000000048                _bss_end_ofs
                 0x000000000000004c                _end_ofs
                 0x0000000000000050                IRQ_STACK_START_IN
                 0x0000000000000074                relocate_code


>>> 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.
>>
> Marek, going into board_init_r is fine for SPL, for example the
> davinci SPL does some hw initialization in board_init_f and then loads
> u-boot in board_init_r.
> Regards, Christian
>
>> What do you boot the rest from ?
>>
>>> 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

Best regards,
José Gonçalves


More information about the U-Boot mailing list