summaryrefslogtreecommitdiff
path: root/arch/blackfin/include/asm/barrier.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-03-23 01:20:02 (GMT)
committerLinus Torvalds <torvalds@linux-foundation.org>2012-03-23 01:20:02 (GMT)
commit4f5b1affdda3e0c48cac674182f52004137b0ffc (patch)
tree463b738156ee9ddfe7792324e501e523499d1661 /arch/blackfin/include/asm/barrier.h
parentdb1417967959569599da2a4bd0ffb93b17ad795f (diff)
parent1762275e7a08e808387999f582430172a02758a5 (diff)
downloadlinux-4f5b1affdda3e0c48cac674182f52004137b0ffc.tar.xz
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lliubbo/blackfin
Pull blackfin updates from Bob Liu * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lliubbo/blackfin: (24 commits) blackfin: clean up string bfin_dma_5xx after rename. blackfin:dma: rename bfin_dma_5xx.c to bfin_dma.c bf548: ssm2602: Add ssm2602 platform data into bf548 ezkit board file. Blackfin: s/#if CONFIG/#ifdef CONFIG/ Blackfin: pnav: delete duplicate linux/export.h include bf561: add ppi DLEN macro for 10bits to 16bits arch: blackfin: udpate defconfig Disintegrate asm/system.h for Blackfin [ver #2] arch/blackfin: don't generate random mac in bfin_get_ether_addr() Blackfin: wire up new process_vm syscalls blackfin: cleanup anomaly workarounds blackfin: update default defconfig blackfin: thread_info: add suspend flag bfin: add bfin_ad73311_machine platform device blackfin: bf537: stamp: update board file for 193x blackfin: kgdb: skip hardware watchpoint test bf548: add ppi interrupt mask and blanking clocks blackfin: bf561: forgot CSYNC in get_core_lock_noflush spi/bfin_spi: drop bits_per_word from client data blackfin: cplb-mpu: fix page mask table overflow ...
Diffstat (limited to 'arch/blackfin/include/asm/barrier.h')
-rw-r--r--arch/blackfin/include/asm/barrier.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/arch/blackfin/include/asm/barrier.h b/arch/blackfin/include/asm/barrier.h
new file mode 100644
index 0000000..ebb1895
--- /dev/null
+++ b/arch/blackfin/include/asm/barrier.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2004-2009 Analog Devices Inc.
+ * Tony Kou (tonyko@lineo.ca)
+ *
+ * Licensed under the GPL-2 or later
+ */
+
+#ifndef _BLACKFIN_BARRIER_H
+#define _BLACKFIN_BARRIER_H
+
+#include <asm/cache.h>
+
+#define nop() __asm__ __volatile__ ("nop;\n\t" : : )
+
+/*
+ * Force strict CPU ordering.
+ */
+#ifdef CONFIG_SMP
+
+#ifdef __ARCH_SYNC_CORE_DCACHE
+/* Force Core data cache coherence */
+# define mb() do { barrier(); smp_check_barrier(); smp_mark_barrier(); } while (0)
+# define rmb() do { barrier(); smp_check_barrier(); } while (0)
+# define wmb() do { barrier(); smp_mark_barrier(); } while (0)
+# define read_barrier_depends() do { barrier(); smp_check_barrier(); } while (0)
+#else
+# define mb() barrier()
+# define rmb() barrier()
+# define wmb() barrier()
+# define read_barrier_depends() do { } while (0)
+#endif
+
+#else /* !CONFIG_SMP */
+
+#define mb() barrier()
+#define rmb() barrier()
+#define wmb() barrier()
+#define read_barrier_depends() do { } while (0)
+
+#endif /* !CONFIG_SMP */
+
+#define smp_mb() mb()
+#define smp_rmb() rmb()
+#define smp_wmb() wmb()
+#define set_mb(var, value) do { var = value; mb(); } while (0)
+#define smp_read_barrier_depends() read_barrier_depends()
+
+#endif /* _BLACKFIN_BARRIER_H */