All of lore.kernel.org
 help / color / mirror / Atom feed
* 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.