diff options
author | Michael S. Tsirkin <mst@redhat.com> | 2016-01-20 14:12:58 -0500 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2016-01-26 03:18:29 -0500 |
commit | a7c490333df3cff5086ddf19a0837529304fa097 (patch) | |
tree | 4ea3f4646f10a41d6fe06de3b77eb3a1b6d6a229 /tools | |
parent | 2989be09a8a9d62a785137586ad941f916e08f83 (diff) |
tools/virtio: use virt_xxx barriers
Fix build after API changes.
Reported-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/virtio/asm/barrier.h | 22 | ||||
-rw-r--r-- | tools/virtio/linux/compiler.h | 9 | ||||
-rw-r--r-- | tools/virtio/linux/kernel.h | 1 |
3 files changed, 23 insertions, 9 deletions
diff --git a/tools/virtio/asm/barrier.h b/tools/virtio/asm/barrier.h index 26b7926bda88..ba34f9e96efd 100644 --- a/tools/virtio/asm/barrier.h +++ b/tools/virtio/asm/barrier.h | |||
@@ -1,15 +1,19 @@ | |||
1 | #if defined(__i386__) || defined(__x86_64__) | 1 | #if defined(__i386__) || defined(__x86_64__) |
2 | #define barrier() asm volatile("" ::: "memory") | 2 | #define barrier() asm volatile("" ::: "memory") |
3 | #define mb() __sync_synchronize() | 3 | #define virt_mb() __sync_synchronize() |
4 | 4 | #define virt_rmb() barrier() | |
5 | #define smp_mb() mb() | 5 | #define virt_wmb() barrier() |
6 | # define dma_rmb() barrier() | 6 | /* Atomic store should be enough, but gcc generates worse code in that case. */ |
7 | # define dma_wmb() barrier() | 7 | #define virt_store_mb(var, value) do { \ |
8 | # define smp_rmb() barrier() | 8 | typeof(var) virt_store_mb_value = (value); \ |
9 | # define smp_wmb() barrier() | 9 | __atomic_exchange(&(var), &virt_store_mb_value, &virt_store_mb_value, \ |
10 | __ATOMIC_SEQ_CST); \ | ||
11 | barrier(); \ | ||
12 | } while (0); | ||
10 | /* Weak barriers should be used. If not - it's a bug */ | 13 | /* Weak barriers should be used. If not - it's a bug */ |
11 | # define rmb() abort() | 14 | # define mb() abort() |
12 | # define wmb() abort() | 15 | # define rmb() abort() |
16 | # define wmb() abort() | ||
13 | #else | 17 | #else |
14 | #error Please fill in barrier macros | 18 | #error Please fill in barrier macros |
15 | #endif | 19 | #endif |
diff --git a/tools/virtio/linux/compiler.h b/tools/virtio/linux/compiler.h new file mode 100644 index 000000000000..845960e1cbf2 --- /dev/null +++ b/tools/virtio/linux/compiler.h | |||
@@ -0,0 +1,9 @@ | |||
1 | #ifndef LINUX_COMPILER_H | ||
2 | #define LINUX_COMPILER_H | ||
3 | |||
4 | #define WRITE_ONCE(var, val) \ | ||
5 | (*((volatile typeof(val) *)(&(var))) = (val)) | ||
6 | |||
7 | #define READ_ONCE(var) (*((volatile typeof(val) *)(&(var)))) | ||
8 | |||
9 | #endif | ||
diff --git a/tools/virtio/linux/kernel.h b/tools/virtio/linux/kernel.h index 4db7d5691ba7..033849948215 100644 --- a/tools/virtio/linux/kernel.h +++ b/tools/virtio/linux/kernel.h | |||
@@ -8,6 +8,7 @@ | |||
8 | #include <assert.h> | 8 | #include <assert.h> |
9 | #include <stdarg.h> | 9 | #include <stdarg.h> |
10 | 10 | ||
11 | #include <linux/compiler.h> | ||
11 | #include <linux/types.h> | 12 | #include <linux/types.h> |
12 | #include <linux/printk.h> | 13 | #include <linux/printk.h> |
13 | #include <linux/bug.h> | 14 | #include <linux/bug.h> |