lockref: use arch_mutex_cpu_relax() in CMPXCHG_LOOP()
[linux-2.6-microblaze.git] / lib / lockref.c
index e294ae4..6f9d434 100644 (file)
 # define cmpxchg64_relaxed cmpxchg64
 #endif
 
+/*
+ * Allow architectures to override the default cpu_relax() within CMPXCHG_LOOP.
+ * This is useful for architectures with an expensive cpu_relax().
+ */
+#ifndef arch_mutex_cpu_relax
+# define arch_mutex_cpu_relax() cpu_relax()
+#endif
+
 /*
  * Note that the "cmpxchg()" reloads the "old" value for the
  * failure case.
@@ -28,7 +36,7 @@
                if (likely(old.lock_count == prev.lock_count)) {                \
                        SUCCESS;                                                \
                }                                                               \
-               cpu_relax();                                                    \
+               arch_mutex_cpu_relax();                                         \
        }                                                                       \
 } while (0)