Messages in this thread | | | Date | Mon, 23 Jul 2007 21:51:53 +0530 (IST) | From | Satyam Sharma <> | Subject | Re: [PATCH 2/8] i386: bitops: Rectify bogus "Ir" constraints |
| |
Hi Andi,
On Mon, 23 Jul 2007, Andi Kleen wrote:
> On Monday 23 July 2007 18:05:38 Satyam Sharma wrote: > > From: Satyam Sharma <ssatyam@cse.iitk.ac.in> > > > > [2/8] i386: bitops: Rectify bogus "Ir" constraints > > > > The "I" constraint (on the i386 platform) is used to restrict constants to > > the 0..31 range, for use with instructions that must deal with bit numbers. > > It means I or r, not I modified by r. This means either a immediate constant > 0..31 or a register, which is correct. > > % cat t18.c > > f() > { > asm("xxx %0" :: "rI" (10)); > asm("yyy %0" :: "rI" (100)); > } > % gcc -O2 -S t18.c > % cat t18.s > ... > f: > .LFB2: > #APP > xxx $10 > #NO_APP > movl $100, %eax > #APP > yyy %eax > #NO_APP > ret > .LFE2: > ...
Whoa, thanks for explaining that to me -- I didn't know, obviously. I had just written a test program that used "Ir" with an automatic variable defined in the inline function (as is the case with these bitops) and observed that even when I gave > 32 values, it would still work -- hence my conclusion.
However, the patch still stands, does it not? [ I will modify the changelog, obviously. ] The thing is that we don't want to limit @nr to <= 31 in the first place, or am I wrong again? :-)
Thanks, Satyam - 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/
| |