| To: | linux-mips@linux-mips.org |
|---|---|
| Subject: | RE: Bug in atomic_sub_if_positive |
| From: | "Morten Larsen" <mlarsen@broadcom.com> |
| Date: | Tue, 1 Jul 2008 17:12:19 -0700 |
| Original-recipient: | rfc822;linux-mips@linux-mips.org |
| Sender: | linux-mips-bounce@linux-mips.org |
| Thread-index: | Acjb16gnajlQWCmATQa1bV7F7m0yoAAABL1g |
| Thread-topic: | RE: Bug in atomic_sub_if_positive |
> As far as I can tell the branch optimization fixes in 2.6.21 introduced
> a bug in atomic_sub_if_positive that causes it to return even when the
> sc instruction fails. The result is that e.g. down_trylock becomes
> unreliable as the semaphore counter is not always decremented.
Previous patch was garbled by Outlook - this one should be clean:
--- a/include/asm-mips/atomic.h 2008-06-25 22:38:43.159739000 -0700
+++ b/include/asm-mips/atomic.h 2008-06-25 22:39:07.552065000 -0700
@@ -292,10 +292,10 @@ static __inline__ int atomic_sub_if_posi
" beqz %0, 2f \n"
" subu %0, %1, %3 \n"
" .set reorder \n"
- "1: \n"
" .subsection 2 \n"
"2: b 1b \n"
" .previous \n"
+ "1: \n"
" .set mips0 \n"
: "=&r" (result), "=&r" (temp), "=m" (v->counter)
: "Ir" (i), "m" (v->counter)
@@ -682,10 +682,10 @@ static __inline__ long atomic64_sub_if_p
" beqz %0, 2f \n"
" dsubu %0, %1, %3 \n"
" .set reorder \n"
- "1: \n"
" .subsection 2 \n"
"2: b 1b \n"
" .previous \n"
+ "1: \n"
" .set mips0 \n"
: "=&r" (result), "=&r" (temp), "=m" (v->counter)
: "Ir" (i), "m" (v->counter)
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | Re: RFC: Adding non-PIC executable support to MIPS, Richard Sandiford |
|---|---|
| Next by Date: | Re: [SPAM] RE: Bug in atomic_sub_if_positive, Markus Gothe |
| Previous by Thread: | Re: RFC: Adding non-PIC executable support to MIPS, Daniel Jacobowitz |
| Next by Thread: | Re: [SPAM] RE: Bug in atomic_sub_if_positive, Markus Gothe |
| Indexes: | [Date] [Thread] [Top] [All Lists] |