linux-mips
[Top] [All Lists]

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

To: Ralf Baechle <ralf@oss.sgi.com>
Subject: Re: [patch] linux 2.4.9: Bad code in xchg_u32()
From: Jun Sun <jsun@mvista.com>
Date: Tue, 16 Oct 2001 15:49:29 -0700
Cc: "Maciej W. Rozycki" <macro@ds2.pg.gda.pl>, linux-mips@fnet.fr, linux-mips@oss.sgi.com
References: <Pine.GSO.3.96.1011016161735.19676E-100000@delta.ds2.pg.gda.pl> <20011017002947.A19789@dea.linux-mips.net>
Sender: owner-linux-mips@oss.sgi.com
Ralf Baechle wrote:
> 
> 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.

Is there any reason to think "R" *should* be better than "m"?

Jun

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