[U-Boot] RFC: Aligning arch initialisation sequences

Graeme Russ graeme.russ at gmail.com
Sat Nov 13 12:18:52 CET 2010


On 13/11/10 19:20, Albert ARIBAUD wrote:
> Le 13/11/2010 05:16, Graeme Russ a écrit :
> 
>> I essence, the gd pointer is a unique global variable available prior to
>> relocation. On all other arches, this is achieved by using a reserved
>> register which I do not have the luxury of on x86 :(
> 
> Dusting off ooooold knowledge of x86 and without even a glance at x86 
> u-boot... Since GD is the only global used pre-reloc, can you not ensure 
> it always ends up first in the data segment, and then manage two values 
> for the DS segment reg, one pre-reloc where only gd can be used, and one 
> post-reloc where gd and all the other globals can be accessed?

I had though of something similar to that by using GS (which is not
generally used by u-boot) but it is very messy

All segments are currently setup to be full 4GB with the initial descriptor
table hard-coded in flash and then reloaded after relocation (it needs to
be reloaded so it does not get clobbered when erasing flash or relocating
from RAM). I did have a dynamic GTD calculated in asm using self modifying
code but changed that out to use the same 'C' methodology as Linux. I would
prefer not to go back there...

So yes, it is possible, but quite frankly, I would rather leave the init
functions post relocation than mess around with the GTS pre-relocation

Regards,

Graeme


More information about the U-Boot mailing list