1
1

* when using gcc inline assembly, labels must be in the local number form or there

will be complaints about duplicate labels.  Fixes the rest of the compile issues
  in Opal on IRIX

This commit was SVN r7919.
Этот коммит содержится в:
Brian Barrett 2005-10-28 15:29:12 +00:00
родитель d90a47c529
Коммит 5ad49fac1f

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

@ -91,14 +91,14 @@ static inline int opal_atomic_cmpset_32(volatile int32_t *addr,
__asm__ __volatile__ ("\t"
".set noreorder \n"
"retry: \n\t"
"1: \n\t"
"ll %0, %2 \n\t" /* load *addr into ret */
"bne %0, %3, done \n\t" /* done if oldval != ret */
"bne %0, %3, 2f \n\t" /* done if oldval != ret */
"or %5, %4, 0 \n\t" /* ret = newval */
"sc %5, %2 \n\t" /* store ret in *addr */
/* note: ret will be 0 if failed, 1 if succeeded */
"bne %5, 1, retry \n\t"
"done: \n\t"
"bne %5, 1, 1b \n\t"
"2: \n\t"
".set reorder \n"
: "=&r"(ret), "=m"(*addr)
: "m"(*addr), "r"(oldval), "r"(newval), "r"(tmp)
@ -140,14 +140,14 @@ static inline int opal_atomic_cmpset_64(volatile int64_t *addr,
__asm__ __volatile__ ("\t"
".set noreorder \n"
"retry: \n\t"
"1: \n\t"
"lld %0, %2 \n\t" /* load *addr into ret */
"bne %0, %3, done \n\t" /* done if oldval != ret */
"bne %0, %3, 2f \n\t" /* done if oldval != ret */
"or %5, %4, 0 \n\t" /* tmp = newval */
"scd %5, %2 \n\t" /* store tmp in *addr */
/* note: ret will be 0 if failed, 1 if succeeded */
"bne %5, 1, retry \n"
"done: \n\t"
"bne %5, 1, 1b \n"
"2: \n\t"
".set reorder \n"
: "=&r" (ret), "=m" (*addr)
: "m" (*addr), "r" (oldval), "r" (newval),