diff options
author | David Howells <dhowells@redhat.com> | 2012-03-28 13:30:03 -0400 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2012-03-28 13:30:03 -0400 |
commit | 885df91ca3571afd4b3f50f3391329bbf3c9e262 (patch) | |
tree | e66773beb0fb84fc4a43037ba829719b3cbabe47 /include/asm-generic/system.h | |
parent | 34484277b173d0af1bb00532a264940b57920429 (diff) |
Create asm-generic/barrier.h
Create asm-generic/barrier.h and move the barrier definitions from
asm-generic/system.h to it.
Signed-off-by: David Howells <dhowells@redhat.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'include/asm-generic/system.h')
-rw-r--r-- | include/asm-generic/system.h | 34 |
1 files changed, 1 insertions, 33 deletions
diff --git a/include/asm-generic/system.h b/include/asm-generic/system.h index 82cb53abb9f6..f98f693383c4 100644 --- a/include/asm-generic/system.h +++ b/include/asm-generic/system.h | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/types.h> | 19 | #include <linux/types.h> |
20 | #include <linux/irqflags.h> | 20 | #include <linux/irqflags.h> |
21 | 21 | ||
22 | #include <asm/barrier.h> | ||
22 | #include <asm/cmpxchg.h> | 23 | #include <asm/cmpxchg.h> |
23 | 24 | ||
24 | struct task_struct; | 25 | struct task_struct; |
@@ -33,42 +34,9 @@ extern struct task_struct *__switch_to(struct task_struct *, | |||
33 | 34 | ||
34 | #define arch_align_stack(x) (x) | 35 | #define arch_align_stack(x) (x) |
35 | 36 | ||
36 | #define nop() asm volatile ("nop") | ||
37 | |||
38 | #endif /* !__ASSEMBLY__ */ | ||
39 | |||
40 | /* | ||
41 | * Force strict CPU ordering. | ||
42 | * And yes, this is required on UP too when we're talking | ||
43 | * to devices. | ||
44 | * | ||
45 | * This implementation only contains a compiler barrier. | ||
46 | */ | ||
47 | |||
48 | #define mb() asm volatile ("": : :"memory") | ||
49 | #define rmb() mb() | ||
50 | #define wmb() asm volatile ("": : :"memory") | ||
51 | |||
52 | #ifdef CONFIG_SMP | ||
53 | #define smp_mb() mb() | ||
54 | #define smp_rmb() rmb() | ||
55 | #define smp_wmb() wmb() | ||
56 | #else | ||
57 | #define smp_mb() barrier() | ||
58 | #define smp_rmb() barrier() | ||
59 | #define smp_wmb() barrier() | ||
60 | #endif | ||
61 | |||
62 | #define set_mb(var, value) do { var = value; mb(); } while (0) | ||
63 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
64 | |||
65 | #define read_barrier_depends() do {} while (0) | ||
66 | #define smp_read_barrier_depends() do {} while (0) | ||
67 | |||
68 | /* | 37 | /* |
69 | * we make sure local_irq_enable() doesn't cause priority inversion | 38 | * we make sure local_irq_enable() doesn't cause priority inversion |
70 | */ | 39 | */ |
71 | #ifndef __ASSEMBLY__ | ||
72 | 40 | ||
73 | /* This function doesn't exist, so you'll get a linker error | 41 | /* This function doesn't exist, so you'll get a linker error |
74 | * if something tries to do an invalid xchg(). */ | 42 | * if something tries to do an invalid xchg(). */ |