[U-Boot] [PATCH v2 3/4] ARM: use r9 for gd

Simon Glass
2013-08-21T23:44:32Z

Hi Jeroen,

On Wed, Aug 21, 2013 at 10:22 AM, Jeroen Hofstee <jeroen@myspectrum.nl> wrote:
> Hello Simon,
>
>
> On 08/19/2013 07:32 PM, Jeroen Hofstee wrote:
>>
>>
>> On 08/19/2013 05:08 AM, Simon Glass wrote:
>>>
>>> On Sat, Aug 17, 2013 at 3:40 AM, Jeroen Hofstee <jeroen@myspectrum.nl>
>>> wrote:
>>>>
>>>>
>>>> This patch assumes only crt0.S sets the register used for
>>>> gd in asm. I just noticed cpu/armv7/lowlevel_init.S does set gd
>>>> manually, so all users of the common board.c are likely
>>>> bricked with the patch as is. Looking into it....
>>>
>>> I may misunderstood what you are saying here,
>>
>>
>> Likely, this is not about how to set reserve gd, but why gd
>> is setup twice. The answer is because some more cleanup
>> is needed (which deserves its own patch).
>>
>
> Right... Now I understand what you were talking about. Gd is actually
> setup _three_ times in a row:

Yes.

>
> 1) cpu/armv7/lowlevel_init.S
> 2) ./arch/arm/lib/crt0.S
> 3) common/board_f.c
>
>
>>> but I believe that the
>>> code in common/board_f.c which creates a global_data on the stack can
>>> be removed for ARM now that Albert has tidied all this up with the
>>> crt0.S changes, etc. So in common/board_f.c something like:
>>>
>>> void board_init_f(ulong boot_flags)
>>> {
>>> /* These two archs set up the global_data before board_init_f() */
>>> #if !defined(CONFIG_X86) && !defined(CONFIG_ARM)
>>> gd_t data;
>>>
>>> gd = &data;
>>> #endif
>>>
>>> gd->flags = boot_flags;
>>>
>>
>
> Yup understood now, this makes sense (but as part of a cleanup patchset)

Agreed, no suggestion it should be done here - I just wanted to make
sure you are not working hard to preserve unnecessary code.

Regards,
Simon