[U-Boot] [PATCH] ARM: allocate pre-relocation global_data on pre-relocation stack

Reinhard Meyer u-boot at emk-elektronik.de
Thu Nov 18 21:43:30 CET 2010


Dear Albert ARIBAUD,
> Le 18/11/2010 14:53, Reinhard Meyer a écrit :
>>> That removes the need to reserve memory above the stack
>>> and also removes the need for GENERATED_GBL_DATA_SIZE.
>>> Alignment is automatically "right" provided stack is
>>> aligned.
>>>
>>> Signed-off-by: Reinhard Meyer<u-boot at emk-elektronik.de>
>>> ---
>>> arch/arm/lib/board.c | 5 +++--
>>> 1 files changed, 3 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c
>>> index 1fd5f83..53e0f4f 100644
>>> --- a/arch/arm/lib/board.c
>>> +++ b/arch/arm/lib/board.c
>>> @@ -274,11 +274,12 @@ void board_init_f (ulong bootflag)
>>> init_fnc_t **init_fnc_ptr;
>>> gd_t *id;
>>> ulong addr, addr_sp;
>>> + gd_t auto_gd;
>>>
>>> /* Pointer is writable since we allocated a register for it */
>>> - gd = (gd_t *) (CONFIG_SYS_INIT_SP_ADDR);
>>> + gd =&auto_gd;
>>> /* compiler optimization barrier needed for GCC>= 3.4 */
>>> - __asm__ __volatile__("": : :"memory");
>>> + /* __asm__ __volatile__("": : :"memory"); */
>>>
>>> memset ((void*)gd, 0, sizeof (gd_t));
>>>
>>
>> Are there any objections to this patch now?
>> I can provide a V2 where the "compiler optimization barrier" stuff is
>> completely removed.
>>
>> Tested on: at91sam9xe / arm926ejs / top9000 and at91sam9xe-ek boards.
>
> I'm probably lagging behind... How do you ensure that the pre-relocation GD content ends up in the post-relocation GD (which cannot be that stack variable since the stack is going to be somewhere else)?

Check the function yourself:
there is a memcpy of this GD to an area in SDRAM at the end...

Best Regards,
Reinhard


More information about the U-Boot mailing list