[PATCH 5/6] powerpc/boot: Add mfdcrx
Segher Boessenkool
segher at kernel.crashing.org
Fri Dec 2 09:55:29 EST 2011
>>> +#define mfdcrx(rn) \
>>> + ({ \
>>> + unsigned long rval; \
>>> + asm volatile("mfdcrx %0,%1" : "=r"(rval) : "g"(rn)); \
>>> + rval; \
>>> + })
>>
>> "g" is never correct on PowerPC, you want "r" here. You can write
>> this as a static inline btw, you only need the #define stuff when
>> there is an "i" constraint involved.
>
> I think you can still use static inlines even when a
> constraint is one that requires a compile time constant.
Marking a function inline does not guarantee the compiler will
perform inline substitution on it, which you need here. I don't
think it's a problem with recent GCC in the context of the Linux
kernel though, if you use __always_inline that is.
Segher
More information about the Linuxppc-dev
mailing list