1
1

Add the memory and the cc to the clobber list for the cas atomics.

This commit was SVN r22664.
Этот коммит содержится в:
George Bosilca 2010-02-18 19:15:50 +00:00
родитель 52f0f75a28
Коммит ab202d0f69
2 изменённых файлов: 12 добавлений и 11 удалений

Просмотреть файл

@ -84,11 +84,11 @@ static inline int opal_atomic_cmpset_32( volatile int32_t *addr,
{
unsigned char ret;
__asm__ __volatile__ (
SMPLOCK "cmpxchgl %3,%4 \n\t"
SMPLOCK "cmpxchgl %3,%2 \n\t"
"sete %0 \n\t"
: "=qm" (ret), "=a" (oldval), "=m" (*addr)
: "q"(newval), "m"(*addr), "1"(oldval)
);
: "=qm" (ret), "+a" (oldval), "+m" (*addr)
: "q"(newval)
: "memory", "cc");
return (int)ret;
}
@ -105,10 +105,11 @@ static inline int opal_atomic_cmpset_64( volatile int64_t *addr,
{
unsigned char ret;
__asm__ __volatile__ (
SMPLOCK "cmpxchgq %3,%4 \n\t"
SMPLOCK "cmpxchgq %3,%2 \n\t"
"sete %0 \n\t"
: "=qm" (ret), "=a" (oldval), "=m" (*((volatile long*)addr))
: "q"(newval), "m"(*((volatile long*)addr)), "1"(oldval)
: "=qm" (ret), "+a" (oldval), "+m" (*((volatile long*)addr))
: "q"(newval)
: "memory", "cc"
);
return (int)ret;

Просмотреть файл

@ -91,11 +91,11 @@ static inline int opal_atomic_cmpset_32(volatile int32_t *addr,
{
unsigned char ret;
__asm__ __volatile__ (
SMPLOCK "cmpxchgl %3,%4 \n\t"
SMPLOCK "cmpxchgl %3,%2 \n\t"
"sete %0 \n\t"
: "=qm" (ret), "=a" (oldval), "=m" (*addr)
: "q"(newval), "m"(*((volatile long*)addr)), "1"(oldval)
);
: "=qm" (ret), "+a" (oldval), "+m" (*addr)
: "q"(newval)
: "memory", "cc");
return (int)ret;
}