diff options
Diffstat (limited to 'lib/lockref.c')
-rw-r--r-- | lib/lockref.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/lockref.c b/lib/lockref.c index e294ae445c9a..6f9d434c1521 100644 --- a/lib/lockref.c +++ b/lib/lockref.c | |||
@@ -12,6 +12,14 @@ | |||
12 | #endif | 12 | #endif |
13 | 13 | ||
14 | /* | 14 | /* |
15 | * Allow architectures to override the default cpu_relax() within CMPXCHG_LOOP. | ||
16 | * This is useful for architectures with an expensive cpu_relax(). | ||
17 | */ | ||
18 | #ifndef arch_mutex_cpu_relax | ||
19 | # define arch_mutex_cpu_relax() cpu_relax() | ||
20 | #endif | ||
21 | |||
22 | /* | ||
15 | * Note that the "cmpxchg()" reloads the "old" value for the | 23 | * Note that the "cmpxchg()" reloads the "old" value for the |
16 | * failure case. | 24 | * failure case. |
17 | */ | 25 | */ |
@@ -28,7 +36,7 @@ | |||
28 | if (likely(old.lock_count == prev.lock_count)) { \ | 36 | if (likely(old.lock_count == prev.lock_count)) { \ |
29 | SUCCESS; \ | 37 | SUCCESS; \ |
30 | } \ | 38 | } \ |
31 | cpu_relax(); \ | 39 | arch_mutex_cpu_relax(); \ |
32 | } \ | 40 | } \ |
33 | } while (0) | 41 | } while (0) |
34 | 42 | ||