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

Zhong Hongbo
2012-09-05T14:45:30Z

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@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.

Thanks,
hongbo
>
> Regards,
> Stefano
>