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....

Reply via email to