All of lore.kernel.org
 help / color / mirror / Atom feed
* locking problems with mips atomicity ?
@ 2004-04-20 22:44 Harm Verhagen
  2004-04-20 22:49 ` Daniel Jacobowitz
  0 siblings, 1 reply; 5+ messages in thread
From: Harm Verhagen @ 2004-04-20 22:44 UTC (permalink / raw)
  To: linux-mips

Hi folks,

I noticed the following thread "locking problem with mips atomicity" on
the GCC mailing list, and I started to wonder if the linux kernel has
the same problem.

http://gcc.gnu.org/ml/gcc/2004-03/threads.html#01061


It about the problem that gcc can generate loads (using AT) in between
the ll and sc instructions (which is not legal according to the MIPS
spec) This can happen when  incorrect constraints are used with the
inline assembly, and the inline assembly happens to be in an inline
functions.

The code from linux 2.4.26 arch-mips/atomic.h looks _very_ similar to
the code described in the thread that has a BUG.

static __inline__ void atomic_add(int i, atomic_t * v)
{
	unsigned long temp;

	__asm__ __volatile__(
		"1:   ll      %0, %1      # atomic_add\n"
		"     addu    %0, %2                  \n"
		"     sc      %0, %1                  \n"
		"     beqz    %0, 1b                  \n"
		: "=&r" (temp), "=m" (v->counter)
		: "Ir" (i), "m" (v->counter));
}

So I wonder if there is a bug here. 
Can some MIPS guru check ? :)


Please copy me on replies as I'm not subscribed

Kind regards,
Harm Verhagen

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2004-04-21 12:43 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-04-20 22:44 locking problems with mips atomicity ? Harm Verhagen
2004-04-20 22:49 ` Daniel Jacobowitz
2004-04-20 22:53   ` Harm Verhagen
2004-04-20 22:56     ` Daniel Jacobowitz
2004-04-21 12:43   ` Maciej W. Rozycki

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.