[U-Boot] [v3] arm: Fixed the offset for the no relocation.

Zhong Hongbo bocui107 at gmail.com
Thu Sep 6 17:36:25 CEST 2012


On 06/09/12 03:22, Stefano Babic wrote:
> On 05/09/2012 16:45, Zhong Hongbo wrote:
>> On 04/09/12 23:57, Stefano Babic wrote:
>>> On 04/09/2012 16:03, Zhong Hongbo wrote:
>>>> On 03/09/12 08:14, Marek Vasut wrote:
>>>>> Dear Zhong Hongbo,
>>>>>
>>>>>> From: Zhong Hongbo <bocui107 at gmail.com>
>>>>>>
>>>>>> When the u-boot address of destination equal to  __start,
>>>>>> no relocation. relocation offset(r9) = 0.
>>>>>
>>>>> Good, now what kind of issue does this patch fix?
>>>> Hi Marek
>>>>
>>>> When you adopt CONFIG_SPL_BUILD framework, no CONFIG_NAND_SPL, if the
>>>> addr of destination is equal to _start, we should skip u-boot relocation.
>>>>
>>>> In the last, u-boot will count the dest addr, see the below:
>>>>
>>>>
>>>>         adr     r1, _start
>>>>         add     lr, r0, r1
>>>>         add     lr, lr, r9
>>>>
>>>> Here, lr = lr + r9, r9 is the offset of u-boot, So when it do not neet
>>>> to reolocat, we need to set the zero value for r9 register.
>>>>
>>>>         /* setup parameters for board_init_r */
>>>>         mov     r0, r5          /* gd_t */
>>>>         mov     r1, r6          /* dest_addr */
>>>>         /* jump to it ... */
>>>>         mov     pc, lr
>>>
>>> I can confirm this issue - I see this when I ported SPL to a MX35 board.
>>> However, clearing r9 was not enough. I had to fix also _rel_dyn_* to
>>> make SPL working, and I did changing the start.S in the same way start.S
>>> for arv7 is built.
>>>
>>> Do you not have these issues ?
>> Hi Stefano,
>>
>> That is enough for my smdk6400 board.
> 
> 
Hi Stefano,

> Ok, thanks. Then I will post a patch on top of yours, but here my:
> 
> Tested-by: Stefano Babic <sbabic at denx.de>
> 
> Tested on a i.MX35 board (ARM1136) with SPL.

Ok, Thanks,

BR,
hongbo
> 
> Regards,
> Stefano
> 
> 



More information about the U-Boot mailing list