linux-mips-fnet
[Top] [All Lists]

Re: [patch] linux 2.4.9: Bad code in xchg_u32()

To: "Maciej W. Rozycki" <macro@ds2.pg.gda.pl>
Subject: Re: [patch] linux 2.4.9: Bad code in xchg_u32()
From: Ralf Baechle <ralf@oss.sgi.com>
Date: Wed, 17 Oct 2001 00:29:47 +0200
Cc: linux-mips@fnet.fr, linux-mips@oss.sgi.com
In-reply-to: <Pine.GSO.3.96.1011016161735.19676E-100000@delta.ds2.pg.gda.pl>; from macro@ds2.pg.gda.pl on Tue, Oct 16, 2001 at 07:06:40PM +0200
References: <Pine.GSO.3.96.1011016161735.19676E-100000@delta.ds2.pg.gda.pl>
User-agent: Mutt/1.2.5i
On Tue, Oct 16, 2001 at 07:06:40PM +0200, Maciej W. Rozycki wrote:

> 
>  Unfortunately, gcc 2.95.3 doesn't want to accept a "=R" output constraint
> here so I had to use "=m".  It looks like a bug in gcc.  Until it is fixed
> the "R" input constraint here is sufficient for gcc to know it has m
> already available in one of registers.  I added ".set nomacro" to make
> sure the second ll fits in the BDS as well.

I've added the "memory" clobber back; xchg() is expected to imply a memory
barrier.

"R" indeed seems to be fishy; I can't compile the kernel if I remove
the volatile from the first argument of xchg_u32().  I'd feel safer if
we could use "m" until we can be sure "R" works fine.

  Ralf

<Prev in Thread] Current Thread [Next in Thread>