[U-Boot] RFC: Aligning arch initialisation sequences

Graeme Russ graeme.russ at gmail.com
Sun Nov 14 06:48:17 CET 2010


On 14/11/10 16:10, Graeme Russ wrote:
> On 13/11/10 22:18, Graeme Russ wrote:
>> On 13/11/10 19:20, Albert ARIBAUD wrote:
>>> Le 13/11/2010 05:16, Graeme Russ a écrit :
>>>

> static inline void *get_gd_ptr(void)
> {
> 	void *gd_ptr;
> 
> 	asm volatile("gs mov 0, %0\n" : "=r" (gd_ptr));
> 	return gd_ptr;
> }
> 

static inline gd_t *get_gd_ptr(void)
{
	gd_t *gd_ptr;

	asm volatile("fs mov 0, %0\n" : "=r" (gd_ptr));
	return gd_ptr;
}

works a treat :)

Is there any reason the other arches could not implement an inline function
as well? ARM for example:

-#define DECLARE_GLOBAL_DATA_PTR     register volatile gd_t *gd asm ("r8")

+static inline gd_t *gd(void)
+{
+	gd_t *gd_ptr;
+
+	asm volatile("mov r8, %0\n" : "=r" (gd_ptr));
+	return gd_ptr;
+}

Is the compiler smart enough to optimise out and not increase code size?

If so, all the arches can have identical implementations for using global data

Regards,

Graeme


More information about the U-Boot mailing list