On 27 February 2008 13:07, Krzysztof Halasa wrote:
> "Dave Korn" writes:
>
>>> #define get_user(x,p)
\
>>> ({ \
>>> register const u8 __user *__p asm("r0") = (p); \
>>> register unsigned long __r2 asm("r2"); \
>>> register int __e asm("r0"); \
>>> __asm__ __volatile__ ( \
>>> __asmeq("%0", "r0") __asmeq("%1", "r2") \
>>> "bl __get_user_1" \
>>> : "=&r" (__e), "=r" (__r2) \
>> ^^^^^ '&' means output operand (zero)
>> is early-clobber, so cannot share
>> a register with any input operand.
>
> Well, GCC-Inline-Assembly-HOWTO.html says "An input operand can be
> tied to an earlyclobber operand if its only use as an input occurs
> before the early result is written" and it seems it's the case.
Hmmm, true, so I guess that shouldn't be a problem, unless a bug has cropped
up in that area of the compiler.
cheers,
DaveK
--
Can't think of a witty .sigline today....