diff options
Diffstat (limited to 'include/asm-m32r')
-rw-r--r-- | include/asm-m32r/spinlock.h | 9 | ||||
-rw-r--r-- | include/asm-m32r/system.h | 4 | ||||
-rw-r--r-- | include/asm-m32r/unistd.h | 5 |
3 files changed, 13 insertions, 5 deletions
diff --git a/include/asm-m32r/spinlock.h b/include/asm-m32r/spinlock.h index f94c1a673569..f9f90727a4a1 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 | { |
diff --git a/include/asm-m32r/system.h b/include/asm-m32r/system.h index 9e618afec6ed..4ce0619f6989 100644 --- a/include/asm-m32r/system.h +++ b/include/asm-m32r/system.h | |||
@@ -328,15 +328,15 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size) | |||
328 | #define smp_rmb() rmb() | 328 | #define smp_rmb() rmb() |
329 | #define smp_wmb() wmb() | 329 | #define smp_wmb() wmb() |
330 | #define smp_read_barrier_depends() read_barrier_depends() | 330 | #define smp_read_barrier_depends() read_barrier_depends() |
331 | #define set_mb(var, value) do { (void) xchg(&var, value); } while (0) | ||
331 | #else | 332 | #else |
332 | #define smp_mb() barrier() | 333 | #define smp_mb() barrier() |
333 | #define smp_rmb() barrier() | 334 | #define smp_rmb() barrier() |
334 | #define smp_wmb() barrier() | 335 | #define smp_wmb() barrier() |
335 | #define smp_read_barrier_depends() do { } while (0) | 336 | #define smp_read_barrier_depends() do { } while (0) |
337 | #define set_mb(var, value) do { var = value; barrier(); } while (0) | ||
336 | #endif | 338 | #endif |
337 | 339 | ||
338 | #define set_mb(var, value) do { xchg(&var, value); } while (0) | ||
339 | |||
340 | #define arch_align_stack(x) (x) | 340 | #define arch_align_stack(x) (x) |
341 | 341 | ||
342 | #endif /* _ASM_M32R_SYSTEM_H */ | 342 | #endif /* _ASM_M32R_SYSTEM_H */ |
diff --git a/include/asm-m32r/unistd.h b/include/asm-m32r/unistd.h index 89f376e6229f..5c6a9ac6cf1a 100644 --- a/include/asm-m32r/unistd.h +++ b/include/asm-m32r/unistd.h | |||
@@ -296,8 +296,9 @@ | |||
296 | #ifdef __KERNEL__ | 296 | #ifdef __KERNEL__ |
297 | 297 | ||
298 | #define NR_syscalls 285 | 298 | #define NR_syscalls 285 |
299 | #include <linux/err.h> | ||
299 | 300 | ||
300 | /* user-visible error numbers are in the range -1 - -124: see | 301 | /* user-visible error numbers are in the range -1 - -MAX_ERRNO: see |
301 | * <asm-m32r/errno.h> | 302 | * <asm-m32r/errno.h> |
302 | */ | 303 | */ |
303 | 304 | ||
@@ -305,7 +306,7 @@ | |||
305 | 306 | ||
306 | #define __syscall_return(type, res) \ | 307 | #define __syscall_return(type, res) \ |
307 | do { \ | 308 | do { \ |
308 | if ((unsigned long)(res) >= (unsigned long)(-(124 + 1))) { \ | 309 | if ((unsigned long)(res) >= (unsigned long)(-MAX_ERRNO)) { \ |
309 | /* Avoid using "res" which is declared to be in register r0; \ | 310 | /* Avoid using "res" which is declared to be in register r0; \ |
310 | errno might expand to a function call and clobber it. */ \ | 311 | errno might expand to a function call and clobber it. */ \ |
311 | int __err = -(res); \ | 312 | int __err = -(res); \ |