X-Git-Url: http://pilppa.org/gitweb/?a=blobdiff_plain;f=include%2Fasm-m32r%2Fspinlock.h;h=f5cfba81ee10c1f59b007dcf34fd9db508a9bff5;hb=e758936e02700ff88a0b08b722a3847b95283ef2;hp=7de7def28da97c651ef7aaebed4271905663e038;hpb=2625c1be3425f5a9d8ef1434449b7d954aaf199d;p=linux-2.6-omap-h63xx.git diff --git a/include/asm-m32r/spinlock.h b/include/asm-m32r/spinlock.h index 7de7def28da..f5cfba81ee1 100644 --- a/include/asm-m32r/spinlock.h +++ b/include/asm-m32r/spinlock.h @@ -9,7 +9,6 @@ * Copyright (C) 2004 Hirokazu Takata */ -#include /* CONFIG_DEBUG_SPINLOCK, CONFIG_SMP */ #include #include #include @@ -299,7 +298,14 @@ static inline void __raw_write_unlock(raw_rwlock_t *rw) ); } -#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 *lock) { @@ -310,4 +316,8 @@ static inline int __raw_write_trylock(raw_rwlock_t *lock) 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_M32R_SPINLOCK_H */