diff options
Diffstat (limited to 'include/asm-m32r/spinlock.h')
-rw-r--r-- | include/asm-m32r/spinlock.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/include/asm-m32r/spinlock.h b/include/asm-m32r/spinlock.h index f94c1a673569..f5cfba81ee10 100644 --- a/include/asm-m32r/spinlock.h +++ b/include/asm-m32r/spinlock.h | |||
@@ -298,7 +298,14 @@ static inline void __raw_write_unlock(raw_rwlock_t *rw) | |||
298 | ); | 298 | ); |
299 | } | 299 | } |
300 | 300 | ||
301 | #define __raw_read_trylock(lock) generic__raw_read_trylock(lock) | 301 | static inline int __raw_read_trylock(raw_rwlock_t *lock) |
302 | { | ||
303 | atomic_t *count = (atomic_t*)lock; | ||
304 | if (atomic_dec_return(count) >= 0) | ||
305 | return 1; | ||
306 | atomic_inc(count); | ||
307 | return 0; | ||
308 | } | ||
302 | 309 | ||
303 | static inline int __raw_write_trylock(raw_rwlock_t *lock) | 310 | static inline int __raw_write_trylock(raw_rwlock_t *lock) |
304 | { | 311 | { |
@@ -309,4 +316,8 @@ static inline int __raw_write_trylock(raw_rwlock_t *lock) | |||
309 | return 0; | 316 | return 0; |
310 | } | 317 | } |
311 | 318 | ||
319 | #define _raw_spin_relax(lock) cpu_relax() | ||
320 | #define _raw_read_relax(lock) cpu_relax() | ||
321 | #define _raw_write_relax(lock) cpu_relax() | ||
322 | |||
312 | #endif /* _ASM_M32R_SPINLOCK_H */ | 323 | #endif /* _ASM_M32R_SPINLOCK_H */ |