[U-Boot] [PATCH 1/2] ext4: Rename block group descriptor table from gd to bgd

Tom Rini trini at ti.com
Thu Oct 4 01:06:02 CEST 2012


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 10/03/12 15:59, Graeme Russ wrote:
> Hi Simon,
> 
> On Thu, Oct 4, 2012 at 7:44 AM, Graeme Russ
> <graeme.russ at gmail.com> wrote:
>> Hi Simon,
>> 
>> On Oct 4, 2012 6:58 AM, "Simon Glass" <sjg at chromium.org> wrote:
>>> 
>>> Hi Graeme,
>>> 
>>> On Wed, Oct 3, 2012 at 1:47 PM, Graeme Russ 
>>> <graeme.russ at gmail.com> wrote:
>>>> Hi Simon,
>>>> 
>>>> On Oct 4, 2012 6:40 AM, "Simon Glass" <sjg at chromium.org> 
>>>> wrote:
>>>>> 
>>>>> Hi Tom,
>>>>> 
>>>>> On Wed, Oct 3, 2012 at 1:04 PM, Tom Rini <trini at ti.com> 
>>>>> wrote:
>>>>>> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
>>>>>> 
>>>>>> On 10/03/12 12:53, Simon Glass wrote:
>>>>>> 
>>>>>>> On x86 machines gd is unfortunately a #define, so we 
>>>>>>> should avoid using gd for anything. This patch changes 
>>>>>>> uses of gd to bgd so that ext4fs can be used on x86.
>>>>>>> 
>>>>>>> Signed-off-by: Simon Glass <sjg at chromium.org>
>>>>>> 
>>>>>> Is there any way to change x86 to not be using a #define 
>>>>>> for gd?
>>>>> 
>>>>> I wasn't brave enough to look hard at that, although
>>>>> Graeme is on copy and will know. It is actually using
>>>>> inline assembly to access this special variable.
>>>> 
>>>> Isn't 'gd' used by everyone (global data)? I fail to see how 
>>>> this ever worked.
>>> 
>>> Well only x86 uses a #define for it, so other archs cause no 
>>> problem. It means that we can't use 'gd' as a symbol anywhere 
>>> in U-Boot. I suppose the only sensible use is a structure 
>>> member, as here.
>> 
>> Ah, I see - and I don't see a quick and easy way out. Let me
>> look a bit deeper...
> 
> I remember now... commit 9e6c572ff03cda84c88663b23c7157d8b1f275ac 
> explains why the #define gd came about:
> 
> "Use the base address of the 'F' segment as a pointer to the
> global data structure. By adding the linear address (i.e. the 'D'
> segment address) as the first word of the global data structure,
> the address of the global data relative to the 'D' segment can be
> found simply, for example, by:
> 
> fs movl 0, %eax
> 
> This makes the gd 'pointer' writable prior to relocation (by 
> reloading the Global Desctriptor Table) which brings x86 into line 
> with all other arches
> 
> NOTE: Writing to the gd 'pointer' is expensive (but we only do it 
> twice) but using it to access global data members (read and write) 
> is still fairly cheap"
> 
> The other option was rather ugly - create gd_get() and gd_set() 
> inline functions and replace all instances of gd-> in all U-Boot 
> source with gd_get()-> or gd_set(foo). I don't think it would have 
> made any difference to code size, but the amount of code touched 
> would have been massive.
> 
> The only other option I can think of is to change gd into something
> much less likely to be used as a symbol (__gd for example), but
> again, the patch to do so would be huge
> 
> I'm open to alternatives

OK, we'll just go with re-naming the ext4 part and build-testing
things on x86 more often :)  Thanks for digging up the details!

- -- 
Tom

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://www.enigmail.net/

iQIcBAEBAgAGBQJQbMTaAAoJENk4IS6UOR1WWmkP/2eRqqVTtCMwNZ6JP7W/lKDl
bGu2PrIqufPdM2CnQJPpgWWT0PcBIV8thkw5DPhJovjkH7bjFc9bmjXjX6sNZU7V
EnMxU/v6GUdCtM2QKeRv2x7a8iLj2uOcZS4tTg68vA7iD7fj5PwDBTNIGLCSh9EC
VbDo2juPXjz+jSRvuhU7w0MzbeRhwdZ2yACZjlNbnX5TdWam1iXMnxlPPh/pC0Td
ejwy0RuQwHPM7Gxy88b2wIc5DOXn8zoWrqLo1tx8B5S4b6jG+vI8zsFozi4lL9NJ
iCinGd56xDNBIQKPr2NjdpSqkh01efpHqaa7tuBa5mzswNDQikoOXE/ncPFqW618
6kaAHfzCAmSQb/QbwV5576LWw2LcQPGDzz8Mb8iL03nAgHZI8an/blEdJjK6j+1G
EpwzXQ6YkAWnrjCuAMGwfm/ARXai/Qh2YSnT5SPMxIXlWxIfAT7PsBRNbXOLQQp0
M/+NNE25cqAiZqwCxAT/eYR/huJtXbOqOj7GiH9NCn5L8c0Vm3mJ+o+YzRiraNro
D2INZRE1B7347wxb/wkjHlLTfz219RrkSNJE7HBHGPbrtSQOXZaeTa44TZPwZbKP
YuDojx9jMeuVQz1xqAoZECjdIgSEDjNcWcXU6l0JZYQClqDhxtS3GTdnlmMY0kdm
kcZsmBCbojJchtN+VUp8
=0NwK
-----END PGP SIGNATURE-----


More information about the U-Boot mailing list