|
@@ -225,12 +225,10 @@ static __inline__ int atomic_sub_if_positive(int i, atomic_t * v)
|
|
|
" .set arch=r4000 \n"
|
|
|
"1: ll %1, %2 # atomic_sub_if_positive\n"
|
|
|
" subu %0, %1, %3 \n"
|
|
|
+ " move %1, %0 \n"
|
|
|
" bltz %0, 1f \n"
|
|
|
- " sc %0, %2 \n"
|
|
|
- " .set noreorder \n"
|
|
|
- " beqzl %0, 1b \n"
|
|
|
- " subu %0, %1, %3 \n"
|
|
|
- " .set reorder \n"
|
|
|
+ " sc %1, %2 \n"
|
|
|
+ " beqzl %1, 1b \n"
|
|
|
"1: \n"
|
|
|
" .set mips0 \n"
|
|
|
: "=&r" (result), "=&r" (temp),
|
|
@@ -244,12 +242,10 @@ static __inline__ int atomic_sub_if_positive(int i, atomic_t * v)
|
|
|
" .set "MIPS_ISA_LEVEL" \n"
|
|
|
"1: ll %1, %2 # atomic_sub_if_positive\n"
|
|
|
" subu %0, %1, %3 \n"
|
|
|
+ " move %1, %0 \n"
|
|
|
" bltz %0, 1f \n"
|
|
|
- " sc %0, %2 \n"
|
|
|
- " .set noreorder \n"
|
|
|
- " beqz %0, 1b \n"
|
|
|
- " subu %0, %1, %3 \n"
|
|
|
- " .set reorder \n"
|
|
|
+ " sc %1, %2 \n"
|
|
|
+ " beqz %1, 1b \n"
|
|
|
"1: \n"
|
|
|
" .set mips0 \n"
|
|
|
: "=&r" (result), "=&r" (temp),
|
|
@@ -570,12 +566,10 @@ static __inline__ long atomic64_sub_if_positive(long i, atomic64_t * v)
|
|
|
" .set arch=r4000 \n"
|
|
|
"1: lld %1, %2 # atomic64_sub_if_positive\n"
|
|
|
" dsubu %0, %1, %3 \n"
|
|
|
+ " move %1, %0 \n"
|
|
|
" bltz %0, 1f \n"
|
|
|
- " scd %0, %2 \n"
|
|
|
- " .set noreorder \n"
|
|
|
- " beqzl %0, 1b \n"
|
|
|
- " dsubu %0, %1, %3 \n"
|
|
|
- " .set reorder \n"
|
|
|
+ " scd %1, %2 \n"
|
|
|
+ " beqzl %1, 1b \n"
|
|
|
"1: \n"
|
|
|
" .set mips0 \n"
|
|
|
: "=&r" (result), "=&r" (temp),
|
|
@@ -589,12 +583,10 @@ static __inline__ long atomic64_sub_if_positive(long i, atomic64_t * v)
|
|
|
" .set "MIPS_ISA_LEVEL" \n"
|
|
|
"1: lld %1, %2 # atomic64_sub_if_positive\n"
|
|
|
" dsubu %0, %1, %3 \n"
|
|
|
+ " move %1, %0 \n"
|
|
|
" bltz %0, 1f \n"
|
|
|
- " scd %0, %2 \n"
|
|
|
- " .set noreorder \n"
|
|
|
- " beqz %0, 1b \n"
|
|
|
- " dsubu %0, %1, %3 \n"
|
|
|
- " .set reorder \n"
|
|
|
+ " scd %1, %2 \n"
|
|
|
+ " beqz %1, 1b \n"
|
|
|
"1: \n"
|
|
|
" .set mips0 \n"
|
|
|
: "=&r" (result), "=&r" (temp),
|