[U-Boot] RFC: Aligning arch initialisation sequences
Reinhard Meyer
u-boot at emk-elektronik.de
Sat Nov 13 23:38:54 CET 2010
Dear Wolfgang Denk,
> Dear Reinhard Meyer,
>
> In message<4CDF04A8.4050802 at emk-elektronik.de> you wrote:
>>
>> But whats left of my ideas is the following:
>>
>> in asm: set stack to end of SRAM (or whatever)
>> (board-config.h would not subtract GENERATED_GBL_DATA_SIZE
>> anymore)
>>
>> in c:
>> board_early_init(void)
>> {
>> gd_t auto_gd;
>> gd =&auto_gd;
>>
>> That would rid us of all alignment concerns:
>> Setting stack to end of initial storage will certainly
>> be aligned, and the auto_gd will be aligned as the
>> toolchain deems necessary.
>>
>> We would not need GENERATED_GBL_DATA_SIZE anymore.
>>
>> The auto_gd space on stack will be valid even into the call
>> to relocate_code.
>
> This has but on tiny shortcoming: we use GD to pass data around, for
> example to pass clock frequencies determind before relocation to the
> code running after relocation - which means that GD must be of a
> statically allocated storage class.
>
> Your stack variable above will go out of scope as soon as we leave the
> board_early_init() function...
Correct, that's why its even now copied over to storage in SDRAM...
(at least on ARM:
debug ("relocation Offset is: %08lx\n", gd->reloc_off);
memcpy (id, (void *)gd, sizeof (gd_t));
relocate_code (addr_sp, id, addr);
)
Best Regards,
Reinhard
More information about the U-Boot
mailing list