diff options
-rw-r--r-- | include/asm-alpha/spinlock.h | 4 | ||||
-rw-r--r-- | include/asm-arm/spinlock.h | 4 | ||||
-rw-r--r-- | include/asm-cris/arch-v32/spinlock.h | 4 | ||||
-rw-r--r-- | include/asm-i386/spinlock.h | 4 | ||||
-rw-r--r-- | include/asm-ia64/spinlock.h | 4 | ||||
-rw-r--r-- | include/asm-m32r/spinlock.h | 4 | ||||
-rw-r--r-- | include/asm-mips/spinlock.h | 4 | ||||
-rw-r--r-- | include/asm-parisc/spinlock.h | 4 | ||||
-rw-r--r-- | include/asm-powerpc/spinlock.h | 4 | ||||
-rw-r--r-- | include/asm-ppc/spinlock.h | 4 | ||||
-rw-r--r-- | include/asm-s390/spinlock.h | 4 | ||||
-rw-r--r-- | include/asm-sh/spinlock.h | 4 | ||||
-rw-r--r-- | include/asm-sparc/spinlock.h | 4 | ||||
-rw-r--r-- | include/asm-sparc64/spinlock.h | 4 | ||||
-rw-r--r-- | include/asm-x86_64/spinlock.h | 4 | ||||
-rw-r--r-- | kernel/spinlock.c | 4 |
16 files changed, 62 insertions, 2 deletions
diff --git a/include/asm-alpha/spinlock.h b/include/asm-alpha/spinlock.h index 0c294c9b0c55..aeeb125f6851 100644 --- a/include/asm-alpha/spinlock.h +++ b/include/asm-alpha/spinlock.h | |||
@@ -166,4 +166,8 @@ static inline void __raw_write_unlock(raw_rwlock_t * lock) | |||
166 | lock->lock = 0; | 166 | lock->lock = 0; |
167 | } | 167 | } |
168 | 168 | ||
169 | #define _raw_spin_relax(lock) cpu_relax() | ||
170 | #define _raw_read_relax(lock) cpu_relax() | ||
171 | #define _raw_write_relax(lock) cpu_relax() | ||
172 | |||
169 | #endif /* _ALPHA_SPINLOCK_H */ | 173 | #endif /* _ALPHA_SPINLOCK_H */ |
diff --git a/include/asm-arm/spinlock.h b/include/asm-arm/spinlock.h index 01b7c26a3038..861092fbaa53 100644 --- a/include/asm-arm/spinlock.h +++ b/include/asm-arm/spinlock.h | |||
@@ -218,4 +218,8 @@ static inline int __raw_read_trylock(raw_rwlock_t *rw) | |||
218 | /* read_can_lock - would read_trylock() succeed? */ | 218 | /* read_can_lock - would read_trylock() succeed? */ |
219 | #define __raw_read_can_lock(x) ((x)->lock < 0x80000000) | 219 | #define __raw_read_can_lock(x) ((x)->lock < 0x80000000) |
220 | 220 | ||
221 | #define _raw_spin_relax(lock) cpu_relax() | ||
222 | #define _raw_read_relax(lock) cpu_relax() | ||
223 | #define _raw_write_relax(lock) cpu_relax() | ||
224 | |||
221 | #endif /* __ASM_SPINLOCK_H */ | 225 | #endif /* __ASM_SPINLOCK_H */ |
diff --git a/include/asm-cris/arch-v32/spinlock.h b/include/asm-cris/arch-v32/spinlock.h index 52df72a62232..5f43df0a5fb4 100644 --- a/include/asm-cris/arch-v32/spinlock.h +++ b/include/asm-cris/arch-v32/spinlock.h | |||
@@ -160,4 +160,8 @@ static __inline__ int is_write_locked(rwlock_t *rw) | |||
160 | return rw->counter < 0; | 160 | return rw->counter < 0; |
161 | } | 161 | } |
162 | 162 | ||
163 | #define _raw_spin_relax(lock) cpu_relax() | ||
164 | #define _raw_read_relax(lock) cpu_relax() | ||
165 | #define _raw_write_relax(lock) cpu_relax() | ||
166 | |||
163 | #endif /* __ASM_ARCH_SPINLOCK_H */ | 167 | #endif /* __ASM_ARCH_SPINLOCK_H */ |
diff --git a/include/asm-i386/spinlock.h b/include/asm-i386/spinlock.h index b0b3043f05e1..c18b71fae6b3 100644 --- a/include/asm-i386/spinlock.h +++ b/include/asm-i386/spinlock.h | |||
@@ -205,4 +205,8 @@ static inline void __raw_write_unlock(raw_rwlock_t *rw) | |||
205 | : "+m" (rw->lock) : : "memory"); | 205 | : "+m" (rw->lock) : : "memory"); |
206 | } | 206 | } |
207 | 207 | ||
208 | #define _raw_spin_relax(lock) cpu_relax() | ||
209 | #define _raw_read_relax(lock) cpu_relax() | ||
210 | #define _raw_write_relax(lock) cpu_relax() | ||
211 | |||
208 | #endif /* __ASM_SPINLOCK_H */ | 212 | #endif /* __ASM_SPINLOCK_H */ |
diff --git a/include/asm-ia64/spinlock.h b/include/asm-ia64/spinlock.h index 9e83210dc312..ff857e31738a 100644 --- a/include/asm-ia64/spinlock.h +++ b/include/asm-ia64/spinlock.h | |||
@@ -213,4 +213,8 @@ static inline int __raw_read_trylock(raw_rwlock_t *x) | |||
213 | return (u32)ia64_cmpxchg4_acq((__u32 *)(x), new.word, old.word) == old.word; | 213 | return (u32)ia64_cmpxchg4_acq((__u32 *)(x), new.word, old.word) == old.word; |
214 | } | 214 | } |
215 | 215 | ||
216 | #define _raw_spin_relax(lock) cpu_relax() | ||
217 | #define _raw_read_relax(lock) cpu_relax() | ||
218 | #define _raw_write_relax(lock) cpu_relax() | ||
219 | |||
216 | #endif /* _ASM_IA64_SPINLOCK_H */ | 220 | #endif /* _ASM_IA64_SPINLOCK_H */ |
diff --git a/include/asm-m32r/spinlock.h b/include/asm-m32r/spinlock.h index f9f90727a4a1..f5cfba81ee10 100644 --- a/include/asm-m32r/spinlock.h +++ b/include/asm-m32r/spinlock.h | |||
@@ -316,4 +316,8 @@ static inline int __raw_write_trylock(raw_rwlock_t *lock) | |||
316 | return 0; | 316 | return 0; |
317 | } | 317 | } |
318 | 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 | |||
319 | #endif /* _ASM_M32R_SPINLOCK_H */ | 323 | #endif /* _ASM_M32R_SPINLOCK_H */ |
diff --git a/include/asm-mips/spinlock.h b/include/asm-mips/spinlock.h index 4c1a1b53aeaf..c8d5587467bb 100644 --- a/include/asm-mips/spinlock.h +++ b/include/asm-mips/spinlock.h | |||
@@ -328,4 +328,8 @@ static inline int __raw_write_trylock(raw_rwlock_t *rw) | |||
328 | } | 328 | } |
329 | 329 | ||
330 | 330 | ||
331 | #define _raw_spin_relax(lock) cpu_relax() | ||
332 | #define _raw_read_relax(lock) cpu_relax() | ||
333 | #define _raw_write_relax(lock) cpu_relax() | ||
334 | |||
331 | #endif /* _ASM_SPINLOCK_H */ | 335 | #endif /* _ASM_SPINLOCK_H */ |
diff --git a/include/asm-parisc/spinlock.h b/include/asm-parisc/spinlock.h index a93960e232cf..e1825530365d 100644 --- a/include/asm-parisc/spinlock.h +++ b/include/asm-parisc/spinlock.h | |||
@@ -152,4 +152,8 @@ static __inline__ int __raw_write_can_lock(raw_rwlock_t *rw) | |||
152 | return !rw->counter; | 152 | return !rw->counter; |
153 | } | 153 | } |
154 | 154 | ||
155 | #define _raw_spin_relax(lock) cpu_relax() | ||
156 | #define _raw_read_relax(lock) cpu_relax() | ||
157 | #define _raw_write_relax(lock) cpu_relax() | ||
158 | |||
155 | #endif /* __ASM_SPINLOCK_H */ | 159 | #endif /* __ASM_SPINLOCK_H */ |
diff --git a/include/asm-powerpc/spinlock.h b/include/asm-powerpc/spinlock.h index c31e4382a775..eaccac8327f2 100644 --- a/include/asm-powerpc/spinlock.h +++ b/include/asm-powerpc/spinlock.h | |||
@@ -285,5 +285,9 @@ static __inline__ void __raw_write_unlock(raw_rwlock_t *rw) | |||
285 | rw->lock = 0; | 285 | rw->lock = 0; |
286 | } | 286 | } |
287 | 287 | ||
288 | #define _raw_spin_relax(lock) cpu_relax() | ||
289 | #define _raw_read_relax(lock) cpu_relax() | ||
290 | #define _raw_write_relax(lock) cpu_relax() | ||
291 | |||
288 | #endif /* __KERNEL__ */ | 292 | #endif /* __KERNEL__ */ |
289 | #endif /* __ASM_SPINLOCK_H */ | 293 | #endif /* __ASM_SPINLOCK_H */ |
diff --git a/include/asm-ppc/spinlock.h b/include/asm-ppc/spinlock.h index 5c64b75f0295..fccaf5531e57 100644 --- a/include/asm-ppc/spinlock.h +++ b/include/asm-ppc/spinlock.h | |||
@@ -161,4 +161,8 @@ static __inline__ void __raw_write_unlock(raw_rwlock_t *rw) | |||
161 | rw->lock = 0; | 161 | rw->lock = 0; |
162 | } | 162 | } |
163 | 163 | ||
164 | #define _raw_spin_relax(lock) cpu_relax() | ||
165 | #define _raw_read_relax(lock) cpu_relax() | ||
166 | #define _raw_write_relax(lock) cpu_relax() | ||
167 | |||
164 | #endif /* __ASM_SPINLOCK_H */ | 168 | #endif /* __ASM_SPINLOCK_H */ |
diff --git a/include/asm-s390/spinlock.h b/include/asm-s390/spinlock.h index ce3edf6d63b3..5f00feaf1be6 100644 --- a/include/asm-s390/spinlock.h +++ b/include/asm-s390/spinlock.h | |||
@@ -154,4 +154,8 @@ static inline int __raw_write_trylock(raw_rwlock_t *rw) | |||
154 | return _raw_write_trylock_retry(rw); | 154 | return _raw_write_trylock_retry(rw); |
155 | } | 155 | } |
156 | 156 | ||
157 | #define _raw_spin_relax(lock) cpu_relax() | ||
158 | #define _raw_read_relax(lock) cpu_relax() | ||
159 | #define _raw_write_relax(lock) cpu_relax() | ||
160 | |||
157 | #endif /* __ASM_SPINLOCK_H */ | 161 | #endif /* __ASM_SPINLOCK_H */ |
diff --git a/include/asm-sh/spinlock.h b/include/asm-sh/spinlock.h index 846322d4c35d..54458fd24981 100644 --- a/include/asm-sh/spinlock.h +++ b/include/asm-sh/spinlock.h | |||
@@ -100,4 +100,8 @@ static inline int __raw_write_trylock(raw_rwlock_t *rw) | |||
100 | return 0; | 100 | return 0; |
101 | } | 101 | } |
102 | 102 | ||
103 | #define _raw_spin_relax(lock) cpu_relax() | ||
104 | #define _raw_read_relax(lock) cpu_relax() | ||
105 | #define _raw_write_relax(lock) cpu_relax() | ||
106 | |||
103 | #endif /* __ASM_SH_SPINLOCK_H */ | 107 | #endif /* __ASM_SH_SPINLOCK_H */ |
diff --git a/include/asm-sparc/spinlock.h b/include/asm-sparc/spinlock.h index 1c75474ba1df..557d08959d2f 100644 --- a/include/asm-sparc/spinlock.h +++ b/include/asm-sparc/spinlock.h | |||
@@ -154,6 +154,10 @@ static inline int __raw_write_trylock(raw_rwlock_t *rw) | |||
154 | #define __raw_spin_lock_flags(lock, flags) __raw_spin_lock(lock) | 154 | #define __raw_spin_lock_flags(lock, flags) __raw_spin_lock(lock) |
155 | #define __raw_read_trylock(lock) generic__raw_read_trylock(lock) | 155 | #define __raw_read_trylock(lock) generic__raw_read_trylock(lock) |
156 | 156 | ||
157 | #define _raw_spin_relax(lock) cpu_relax() | ||
158 | #define _raw_read_relax(lock) cpu_relax() | ||
159 | #define _raw_write_relax(lock) cpu_relax() | ||
160 | |||
157 | #define __raw_read_can_lock(rw) (!((rw)->lock & 0xff)) | 161 | #define __raw_read_can_lock(rw) (!((rw)->lock & 0xff)) |
158 | #define __raw_write_can_lock(rw) (!(rw)->lock) | 162 | #define __raw_write_can_lock(rw) (!(rw)->lock) |
159 | 163 | ||
diff --git a/include/asm-sparc64/spinlock.h b/include/asm-sparc64/spinlock.h index bd5ffc76bc7e..0006fe9f8c7a 100644 --- a/include/asm-sparc64/spinlock.h +++ b/include/asm-sparc64/spinlock.h | |||
@@ -241,6 +241,10 @@ static int inline __write_trylock(raw_rwlock_t *lock) | |||
241 | #define __raw_read_can_lock(rw) (!((rw)->lock & 0x80000000UL)) | 241 | #define __raw_read_can_lock(rw) (!((rw)->lock & 0x80000000UL)) |
242 | #define __raw_write_can_lock(rw) (!(rw)->lock) | 242 | #define __raw_write_can_lock(rw) (!(rw)->lock) |
243 | 243 | ||
244 | #define _raw_spin_relax(lock) cpu_relax() | ||
245 | #define _raw_read_relax(lock) cpu_relax() | ||
246 | #define _raw_write_relax(lock) cpu_relax() | ||
247 | |||
244 | #endif /* !(__ASSEMBLY__) */ | 248 | #endif /* !(__ASSEMBLY__) */ |
245 | 249 | ||
246 | #endif /* !(__SPARC64_SPINLOCK_H) */ | 250 | #endif /* !(__SPARC64_SPINLOCK_H) */ |
diff --git a/include/asm-x86_64/spinlock.h b/include/asm-x86_64/spinlock.h index 3daf5b005905..05ef097ba55b 100644 --- a/include/asm-x86_64/spinlock.h +++ b/include/asm-x86_64/spinlock.h | |||
@@ -133,4 +133,8 @@ static inline void __raw_write_unlock(raw_rwlock_t *rw) | |||
133 | : "=m" (rw->lock) : : "memory"); | 133 | : "=m" (rw->lock) : : "memory"); |
134 | } | 134 | } |
135 | 135 | ||
136 | #define _raw_spin_relax(lock) cpu_relax() | ||
137 | #define _raw_read_relax(lock) cpu_relax() | ||
138 | #define _raw_write_relax(lock) cpu_relax() | ||
139 | |||
136 | #endif /* __ASM_SPINLOCK_H */ | 140 | #endif /* __ASM_SPINLOCK_H */ |
diff --git a/kernel/spinlock.c b/kernel/spinlock.c index d48143eafbfd..476c3741511b 100644 --- a/kernel/spinlock.c +++ b/kernel/spinlock.c | |||
@@ -215,7 +215,7 @@ void __lockfunc _##op##_lock(locktype##_t *lock) \ | |||
215 | if (!(lock)->break_lock) \ | 215 | if (!(lock)->break_lock) \ |
216 | (lock)->break_lock = 1; \ | 216 | (lock)->break_lock = 1; \ |
217 | while (!op##_can_lock(lock) && (lock)->break_lock) \ | 217 | while (!op##_can_lock(lock) && (lock)->break_lock) \ |
218 | cpu_relax(); \ | 218 | _raw_##op##_relax(&lock->raw_lock); \ |
219 | } \ | 219 | } \ |
220 | (lock)->break_lock = 0; \ | 220 | (lock)->break_lock = 0; \ |
221 | } \ | 221 | } \ |
@@ -237,7 +237,7 @@ unsigned long __lockfunc _##op##_lock_irqsave(locktype##_t *lock) \ | |||
237 | if (!(lock)->break_lock) \ | 237 | if (!(lock)->break_lock) \ |
238 | (lock)->break_lock = 1; \ | 238 | (lock)->break_lock = 1; \ |
239 | while (!op##_can_lock(lock) && (lock)->break_lock) \ | 239 | while (!op##_can_lock(lock) && (lock)->break_lock) \ |
240 | cpu_relax(); \ | 240 | _raw_##op##_relax(&lock->raw_lock); \ |
241 | } \ | 241 | } \ |
242 | (lock)->break_lock = 0; \ | 242 | (lock)->break_lock = 0; \ |
243 | return flags; \ | 243 | return flags; \ |