summaryrefslogtreecommitdiff
path: root/libdde-linux26/libdde_linux26/contrib/include/asm-generic/cmpxchg.h
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2013-07-27 22:11:24 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2013-07-27 22:11:24 +0000
commitce6a36c7f7c88e7ca0fda816f9282237bb86829d (patch)
tree611bf9beb2281d34260ca87fc189a0ddc864819a /libdde-linux26/libdde_linux26/contrib/include/asm-generic/cmpxchg.h
parentbb9d6cd642f9189b8102d566c8c46a6de1d2c5f7 (diff)
parent4fbe7358c7747a9165f776eb19addbb9baf7def2 (diff)
Merge branch 'upstream-merged'
Diffstat (limited to 'libdde-linux26/libdde_linux26/contrib/include/asm-generic/cmpxchg.h')
-rw-r--r--libdde-linux26/libdde_linux26/contrib/include/asm-generic/cmpxchg.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/libdde-linux26/libdde_linux26/contrib/include/asm-generic/cmpxchg.h b/libdde-linux26/libdde_linux26/contrib/include/asm-generic/cmpxchg.h
new file mode 100644
index 00000000..213ac6e8
--- /dev/null
+++ b/libdde-linux26/libdde_linux26/contrib/include/asm-generic/cmpxchg.h
@@ -0,0 +1,22 @@
+#ifndef __ASM_GENERIC_CMPXCHG_H
+#define __ASM_GENERIC_CMPXCHG_H
+
+/*
+ * Generic cmpxchg
+ *
+ * Uses the local cmpxchg. Does not support SMP.
+ */
+#ifdef CONFIG_SMP
+#error "Cannot use generic cmpxchg on SMP"
+#endif
+
+/*
+ * Atomic compare and exchange.
+ *
+ * Do not define __HAVE_ARCH_CMPXCHG because we want to use it to check whether
+ * a cmpxchg primitive faster than repeated local irq save/restore exists.
+ */
+#define cmpxchg(ptr, o, n) cmpxchg_local((ptr), (o), (n))
+#define cmpxchg64(ptr, o, n) cmpxchg64_local((ptr), (o), (n))
+
+#endif