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/barrier.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/barrier.h')
-rw-r--r-- | include/asm-generic/barrier.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/include/asm-generic/barrier.h b/include/asm-generic/barrier.h new file mode 100644 index 000000000000..639d7a4d033b --- /dev/null +++ b/include/asm-generic/barrier.h | |||
@@ -0,0 +1,50 @@ | |||
1 | /* Generic barrier definitions, based on MN10300 definitions. | ||
2 | * | ||
3 | * It should be possible to use these on really simple architectures, | ||
4 | * but it serves more as a starting point for new ports. | ||
5 | * | ||
6 | * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. | ||
7 | * Written by David Howells (dhowells@redhat.com) | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or | ||
10 | * modify it under the terms of the GNU General Public Licence | ||
11 | * as published by the Free Software Foundation; either version | ||
12 | * 2 of the Licence, or (at your option) any later version. | ||
13 | */ | ||
14 | #ifndef __ASM_GENERIC_BARRIER_H | ||
15 | #define __ASM_GENERIC_BARRIER_H | ||
16 | |||
17 | #ifndef __ASSEMBLY__ | ||
18 | |||
19 | #define nop() asm volatile ("nop") | ||
20 | |||
21 | /* | ||
22 | * Force strict CPU ordering. | ||
23 | * And yes, this is required on UP too when we're talking | ||
24 | * to devices. | ||
25 | * | ||
26 | * This implementation only contains a compiler barrier. | ||
27 | */ | ||
28 | |||
29 | #define mb() asm volatile ("": : :"memory") | ||
30 | #define rmb() mb() | ||
31 | #define wmb() asm volatile ("": : :"memory") | ||
32 | |||
33 | #ifdef CONFIG_SMP | ||
34 | #define smp_mb() mb() | ||
35 | #define smp_rmb() rmb() | ||
36 | #define smp_wmb() wmb() | ||
37 | #else | ||
38 | #define smp_mb() barrier() | ||
39 | #define smp_rmb() barrier() | ||
40 | #define smp_wmb() barrier() | ||
41 | #endif | ||
42 | |||
43 | #define set_mb(var, value) do { var = value; mb(); } while (0) | ||
44 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
45 | |||
46 | #define read_barrier_depends() do {} while (0) | ||
47 | #define smp_read_barrier_depends() do {} while (0) | ||
48 | |||
49 | #endif /* !__ASSEMBLY__ */ | ||
50 | #endif /* __ASM_GENERIC_BARRIER_H */ | ||