
Dear Reinhard Meyer,
In message 4CDF04A8.4050802@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...
Best regards,
Wolfgang Denk