Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 36019
b: refs/heads/master
c: 65316fd
h: refs/heads/master
i:
  36017: 98931c9
  36015: aa0f799
v: v3
  • Loading branch information
Ralf Baechle committed Sep 27, 2006
1 parent 3d192b8 commit 82f1b74
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 09f451bfb9fe5ceea763a9ebd6ec73dd05e4faf8
refs/heads/master: 65316fd13ad9d82560edbad0a940d684380f7461
47 changes: 46 additions & 1 deletion trunk/include/asm-mips/spinlock.h
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,51 @@ static inline void __raw_write_unlock(raw_rwlock_t *rw)
: "memory");
}

#define __raw_read_trylock(lock) generic__raw_read_trylock(lock)
static inline int __raw_read_trylock(raw_rwlock_t *rw)
{
unsigned int tmp;
int ret;

if (R10000_LLSC_WAR) {
__asm__ __volatile__(
" .set noreorder # __raw_read_trylock \n"
" li %2, 0 \n"
"1: ll %1, %3 \n"
" bnez %1, 2f \n"
" addu %1, 1 \n"
" sc %1, %0 \n"
" beqzl %1, 1b \n"
" .set reorder \n"
#ifdef CONFIG_SMP
" sync \n"
#endif
" li %2, 1 \n"
"2: \n"
: "=m" (rw->lock), "=&r" (tmp), "=&r" (ret)
: "m" (rw->lock)
: "memory");
} else {
__asm__ __volatile__(
" .set noreorder # __raw_read_trylock \n"
" li %2, 0 \n"
"1: ll %1, %3 \n"
" bnez %1, 2f \n"
" addu %1, 1 \n"
" sc %1, %0 \n"
" beqz %1, 1b \n"
" .set reorder \n"
#ifdef CONFIG_SMP
" sync \n"
#endif
" li %2, 1 \n"
"2: \n"
: "=m" (rw->lock), "=&r" (tmp), "=&r" (ret)
: "m" (rw->lock)
: "memory");
}

return ret;
}

static inline int __raw_write_trylock(raw_rwlock_t *rw)
{
Expand Down Expand Up @@ -283,4 +327,5 @@ static inline int __raw_write_trylock(raw_rwlock_t *rw)
return ret;
}


#endif /* _ASM_SPINLOCK_H */

0 comments on commit 82f1b74

Please sign in to comment.