Messages in this thread | | | Date | Fri, 20 Jan 2006 11:02:57 +0100 | From | "Jan Beulich" <> | Subject | Re: warning: read-write constraint -- 2.6.15-git8 onwards |
| |
Looking at the official 3.4.x, 4.0.x, and the prerelease 4.1 sources I can't see such a warning, nor am I getting it with 3.3.3 when building on SLES9 (which makes me assume unmodified 3.3.3 doesn't have this either). I thus wonder whether the compiler used there has an extra, ill patch (after all there's generally nothing wrong for a read-write constraint to only allow memory on x86). Jan
>>> Andi Kleen <ak@suse.de> 19.01.06 04:03:58 >>> On Wednesday 18 January 2006 19:25, Andy Whitcroft wrote: > It seems that the following commit causes a bunch of warnings out of > most of the files in the kernel tree (see below for examples). Backing > this out seems to cure them?
> Compiled with: > > gcc version 3.3.4 (Debian 1:3.3.4-6sarge1) > > -apw > > CC arch/x86_64/kernel/process.o > include/asm/bitops.h: In function `default_idle': > include/asm/bitops.h:65: warning: read-write constraint does not allow a > register > include/asm/bitops.h:65: warning: read-write constraint does not allow a > register > include/asm/bitops.h:30: warning: read-write constraint does not allow a > register > include/asm/bitops.h:30: warning: read-write constraint does not allow a > register
I only tested with gcc 4.0 and 4.1 prereleases where it worked just fine.
__asm__ __volatile__( LOCK_PREFIX "btrl %1,%0" :"+m" (ADDR) :"dIr" (nr));
I tried to covert them from +m to explicit input/output arguments ("=m" (ADDR) : "0" (ADDR)) to fix your compiler but with that I get the the same warning as you with 3.4 with 4.0. Don't know how else it could be written.
Ok one could just pass the address and do a full memory clobber, but that would be a overly large sledgehammer for the problem.
Jan or Andreas - do you have any suggestions how to fix this or should we revert back to the old (technically wrong) state which was
__asm__ __volatile__( LOCK_PREFIX "btrl %1,%0" :"=m" (ADDR) :"dIr" (nr));
Thanks, -Andi
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |