Re: x86-32: clean up rwsem inline asm statements

From: Linus Torvalds
Date: Tue Jan 12 2010 - 20:27:25 EST




On Wed, 13 Jan 2010, Andreas Schwab wrote:

> Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> writes:
>
> > @@ -249,7 +249,7 @@ static inline int rwsem_atomic_update(int delta, struct rw_semaphore *sem)
> > {
> > int tmp = delta;
> >
> > - asm volatile(LOCK_PREFIX "xadd %0,%1"
> > + asm volatile(LOCK_PREFIX "xadd%z0 %0,%1"
> > : "+r" (tmp), "+m" (sem->count)
> > : : "memory");
>
> I think %z0 should be %z1 here.

You're right, but Peter made it all a non-issue anyway.

Thanks for noticing, though, since it implies that somebody read the patch
carefully. It's always a bit scary to change fundamental inline asms,
especially for something like a locking routine where the core _semantics_
are so subtle (and if you get locking wrong, things may still work - you
just end up with some really odd race conditions).

Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/