Dear Wolfgang Denk,
> Dear Reinhard Meyer,
>
> In message<4cdf04a8.4050...@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
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to