X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=include%2Fasm-sh%2Fspinlock.h;h=2586eef07d57214ec977f50b818d61c1c0fff9ed;hb=88032b322a38b37335c8cb2e3473a45c81d280eb;hp=846322d4c35d489daf86e337518dbee79f5c738f;hpb=2b8dfec8c8fa4ba5bc946a602e94e99861462cad;p=powerpc.git diff --git a/include/asm-sh/spinlock.h b/include/asm-sh/spinlock.h index 846322d4c3..2586eef07d 100644 --- a/include/asm-sh/spinlock.h +++ b/include/asm-sh/spinlock.h @@ -88,7 +88,14 @@ static inline void __raw_write_unlock(raw_rwlock_t *rw) __raw_spin_unlock(&rw->lock); } -#define __raw_read_trylock(lock) generic__raw_read_trylock(lock) +static inline int __raw_read_trylock(raw_rwlock_t *lock) +{ + atomic_t *count = (atomic_t*)lock; + if (atomic_dec_return(count) >= 0) + return 1; + atomic_inc(count); + return 0; +} static inline int __raw_write_trylock(raw_rwlock_t *rw) { @@ -100,4 +107,8 @@ static inline int __raw_write_trylock(raw_rwlock_t *rw) return 0; } +#define _raw_spin_relax(lock) cpu_relax() +#define _raw_read_relax(lock) cpu_relax() +#define _raw_write_relax(lock) cpu_relax() + #endif /* __ASM_SH_SPINLOCK_H */