Svante Signell, le Wed 18 May 2011 16:54:24 +0200, a écrit : > A question: I can avoid the warnings below by doing the following asm > change. I saw it somewhere on the web that people recommended this type > of change to enable the inline code go into a register. Does it make > sense (I don't remember much of asm) > asm("xorl %0,%0\n0:\tbsfw %1,%w0\n\tbtr %0,%1\n\tjnc 0b" > - : "=&r" (rv), "=m" (*field) : "1" (*field)); > + : "=&r" (rv), "=m" (*field) : "m" (*field));
It does, but it's not the same, you have no guarantee that the register name will be the same. I have pushed a correct simplification, and actually reported a bug to the Linux kernel, where they actually dropped the read part entirely... > -> The error below goes away with -O1 or higher! > -> ../linux/src/drivers/scsi/ultrastor.c:308:3: error: inconsistent > operand constraints in an ‘asm’ > > Is this OK? There is also a similar case in the glibc code. Where? Samuel