+#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
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev