On 27 February 2008 11:48, Krzysztof Halasa wrote: > Hi, > > not sure where the bug is - gcc 4.2.4pre (CVS), binutils 2.17, > cross compiler X86_64 -> ARM BE.
That asm looks a bit odd to me (but I haven't had much coffee today so I could be reading it wrong):- > #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. > : "0" (__p) \ ^^^^^^ '0' means forcibly share an input operand with operand zero. > : "lr", "cc"); \ > x = (u8) __r2; \ > __e; \ > }) That's quite likely to do reload's head in, isn't it? > Gcc bug? get_user() bug? Should I file a bug entry? I think the macro could well be wrong. Do you know why those constraints were chosen? cheers, DaveK -- Can't think of a witty .sigline today....