* Re: [Bugme-new] [Bug 7602] New: Failure on compilation: include/asm/bitops.h:122: error: inconsistent operand constraints in an `asm' in nfs_access_add_cache()
[not found] <200611302118.kAULIrxS011661@fire-2.osdl.org>
@ 2006-11-30 21:37 ` Andrew Morton
2006-11-30 22:22 ` Andi Kleen
0 siblings, 1 reply; 5+ messages in thread
From: Andrew Morton @ 2006-11-30 21:37 UTC (permalink / raw)
To: Andi Kleen; +Cc: bugme-daemon, linux-kernel, mjw99
On Thu, 30 Nov 2006 13:18:53 -0800
bugme-daemon@bugzilla.kernel.org wrote:
>
> http://bugzilla.kernel.org/show_bug.cgi?id=7602
>
> Summary: Failure on compilation: include/asm/bitops.h:122: error:
> inconsistent operand constraints in an `asm' in
> nfs_access_add_cache()
> Kernel Version: 2.6.19
> Status: NEW
> Severity: high
> Owner: trond.myklebust@fys.uio.no
> Submitter: mjw99@ic.ac.uk
>
>
> Most recent kernel where this bug did *NOT* occur:
> 2.6.18.3
>
> Distribution:
> RHEL4-U2 AS
>
> Hardware Environment:
> 8 CPU Dual Core Opteron box with 32Gb of ram
> http://www.iwill.net/product_2.asp?p_id=90&sp=Y
>
> Software Environment:
> RHEL4-U2
> gcc version 3.4.4 20050721 (Red Hat 3.4.4-2)
>
> Problem Description:
>
> Compilation fails with the error message:
> ....
> CC fs/nfs/client.o
> CC fs/nfs/dir.o
> fs/nfs/dir.c: In function `nfs_access_add_cache':
> include/asm/bitops.h:122: error: inconsistent operand constraints in an `asm'
Seems that this:
static __inline__ int __test_and_set_bit(int nr, volatile void * addr)
{
int oldbit;
__asm__(
"btsl %2,%1\n\tsbbl %0,%0"
:"=r" (oldbit),"+m" (ADDR)
:"dIr" (nr));
return oldbit;
}
explodes with gcc-3.4.4.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Bugme-new] [Bug 7602] New: Failure on compilation: include/asm/bitops.h:122: error: inconsistent operand constraints in an `asm' in nfs_access_add_cache()
2006-11-30 21:37 ` [Bugme-new] [Bug 7602] New: Failure on compilation: include/asm/bitops.h:122: error: inconsistent operand constraints in an `asm' in nfs_access_add_cache() Andrew Morton
@ 2006-11-30 22:22 ` Andi Kleen
2006-11-30 22:32 ` Andrew Morton
0 siblings, 1 reply; 5+ messages in thread
From: Andi Kleen @ 2006-11-30 22:22 UTC (permalink / raw)
To: Andrew Morton; +Cc: bugme-daemon, linux-kernel, mjw99
>
> static __inline__ int __test_and_set_bit(int nr, volatile void * addr)
> {
> int oldbit;
>
> __asm__(
> "btsl %2,%1\n\tsbbl %0,%0"
> :"=r" (oldbit),"+m" (ADDR)
> :"dIr" (nr));
> return oldbit;
> }
>
> explodes with gcc-3.4.4.
Known issue. The new form is correct and needed, but the old gcc doesn't accept
it. I haven't gotten a form that is both and correct and works on the old compiler
out of the gcc hackers I asked.
Probably need to #ifdef it.
-Andi
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Bugme-new] [Bug 7602] New: Failure on compilation: include/asm/bitops.h:122: error: inconsistent operand constraints in an `asm' in nfs_access_add_cache()
2006-11-30 22:22 ` Andi Kleen
@ 2006-11-30 22:32 ` Andrew Morton
2006-11-30 22:49 ` Andi Kleen
0 siblings, 1 reply; 5+ messages in thread
From: Andrew Morton @ 2006-11-30 22:32 UTC (permalink / raw)
To: Andi Kleen; +Cc: bugme-daemon, linux-kernel, mjw99
On Thu, 30 Nov 2006 23:22:00 +0100
Andi Kleen <ak@suse.de> wrote:
> >
> > static __inline__ int __test_and_set_bit(int nr, volatile void * addr)
> > {
> > int oldbit;
> >
> > __asm__(
> > "btsl %2,%1\n\tsbbl %0,%0"
> > :"=r" (oldbit),"+m" (ADDR)
> > :"dIr" (nr));
> > return oldbit;
> > }
> >
> > explodes with gcc-3.4.4.
>
> Known issue. The new form is correct and needed, but the old gcc doesn't accept
> it. I haven't gotten a form that is both and correct and works on the old compiler
> out of the gcc hackers I asked.
Oh, thanks.
What does "d" do, btw? My gcc info page only covers "x86" and says only "`d' register"
(And, more importantly, where is the best description of gcc asm constraints?)
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Bugme-new] [Bug 7602] New: Failure on compilation: include/asm/bitops.h:122: error: inconsistent operand constraints in an `asm' in nfs_access_add_cache()
2006-11-30 22:32 ` Andrew Morton
@ 2006-11-30 22:49 ` Andi Kleen
2006-11-30 23:08 ` Randy Dunlap
0 siblings, 1 reply; 5+ messages in thread
From: Andi Kleen @ 2006-11-30 22:49 UTC (permalink / raw)
To: Andrew Morton; +Cc: bugme-daemon, linux-kernel, mjw99
On Thursday 30 November 2006 23:32, Andrew Morton wrote:
> On Thu, 30 Nov 2006 23:22:00 +0100
> Andi Kleen <ak@suse.de> wrote:
>
> > >
> > > static __inline__ int __test_and_set_bit(int nr, volatile void * addr)
> > > {
> > > int oldbit;
> > >
> > > __asm__(
> > > "btsl %2,%1\n\tsbbl %0,%0"
> > > :"=r" (oldbit),"+m" (ADDR)
> > > :"dIr" (nr));
> > > return oldbit;
> > > }
> > >
> > > explodes with gcc-3.4.4.
> >
> > Known issue. The new form is correct and needed, but the old gcc doesn't accept
> > it. I haven't gotten a form that is both and correct and works on the old compiler
> > out of the gcc hackers I asked.
>
> Oh, thanks.
>
> What does "d" do, btw? My gcc info page only covers "x86" and says only "`d' register"
Hmm, normally edx (aka Extended D register eXtended :) or rdx
But you're right it doesn't make sense here because 'd' is already included in 'r'.
Probably should be dropped.
>
> (And, more importantly, where is the best description of gcc asm constraints?)
Either info pages or gcc source. There was also a web page somewhere with a tutorial,
but i don't think it was a full reference.
-Andi
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Bugme-new] [Bug 7602] New: Failure on compilation: include/asm/bitops.h:122: error: inconsistent operand constraints in an `asm' in nfs_access_add_cache()
2006-11-30 22:49 ` Andi Kleen
@ 2006-11-30 23:08 ` Randy Dunlap
0 siblings, 0 replies; 5+ messages in thread
From: Randy Dunlap @ 2006-11-30 23:08 UTC (permalink / raw)
To: Andi Kleen; +Cc: Andrew Morton, bugme-daemon, linux-kernel, mjw99
On Thu, 30 Nov 2006 23:49:12 +0100 Andi Kleen wrote:
> On Thursday 30 November 2006 23:32, Andrew Morton wrote:
> > On Thu, 30 Nov 2006 23:22:00 +0100
> > Andi Kleen <ak@suse.de> wrote:
> >
> > > >
> > > > static __inline__ int __test_and_set_bit(int nr, volatile void * addr)
> > > > {
> > > > int oldbit;
> > > >
> > > > __asm__(
> > > > "btsl %2,%1\n\tsbbl %0,%0"
> > > > :"=r" (oldbit),"+m" (ADDR)
> > > > :"dIr" (nr));
> > > > return oldbit;
> > > > }
> > > >
> > > > explodes with gcc-3.4.4.
> > >
> > > Known issue. The new form is correct and needed, but the old gcc doesn't accept
> > > it. I haven't gotten a form that is both and correct and works on the old compiler
> > > out of the gcc hackers I asked.
> >
> > Oh, thanks.
> >
> > What does "d" do, btw? My gcc info page only covers "x86" and says only "`d' register"
>
> Hmm, normally edx (aka Extended D register eXtended :) or rdx
>
> But you're right it doesn't make sense here because 'd' is already included in 'r'.
> Probably should be dropped.
>
> >
> > (And, more importantly, where is the best description of gcc asm constraints?)
>
> Either info pages or gcc source. There was also a web page somewhere with a tutorial,
> but i don't think it was a full reference.
e.g. (may be ix86 instead of x86_64):
http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gcc/Constraints.html#Constraints
http://www-128.ibm.com/developerworks/linux/library/l-ia.html
http://www.uwsg.indiana.edu/hypermail/linux/kernel/9804.2/0953.html
---
~Randy
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2006-11-30 23:08 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <200611302118.kAULIrxS011661@fire-2.osdl.org>
2006-11-30 21:37 ` [Bugme-new] [Bug 7602] New: Failure on compilation: include/asm/bitops.h:122: error: inconsistent operand constraints in an `asm' in nfs_access_add_cache() Andrew Morton
2006-11-30 22:22 ` Andi Kleen
2006-11-30 22:32 ` Andrew Morton
2006-11-30 22:49 ` Andi Kleen
2006-11-30 23:08 ` Randy Dunlap
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.