include/asm-ppc/atomic.h: fluff in inline assembly code?
Frank van Maarseveen
frankvm at frankvm.com
Thu Jun 30 00:50:13 EST 2005
Does anyone know why there are often excess arguments in asm() here?
For example,
static __inline__ void atomic_add(int a, atomic_t *v)
{
int t;
__asm__ __volatile__(
"1: lwarx %0,0,%3 # atomic_add\n\
add %0,%2,%0\n"
PPC405_ERR77(0,%3)
" stwcx. %0,0,%3 \n\
bne- 1b"
: "=&r" (t), "=m" (v->counter)
: "r" (a), "r" (&v->counter), "m" (v->counter)
: "cc");
}
seems equivalent to
static __inline__ void atomic_add(int a, atomic_t *v)
{
int t;
__asm__ __volatile__(
"1: lwarx %0,0,%2 # atomic_add\n\
add %0,%1,%0\n"
PPC405_ERR77(0,%2)
" stwcx. %0,0,%2 \n\
bne- 1b"
: "=&r" (t)
: "r" (a), "r" (&v->counter)
: "cc");
}
What is the point of all those v->counter arguments?
--
Frank
More information about the Linuxppc-dev
mailing list