diff options
author | Michael S. Tsirkin <mst@redhat.com> | 2016-01-20 21:12:58 +0200 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2016-01-26 10:18:29 +0200 |
commit | a7c490333df3cff5086ddf19a0837529304fa097 (patch) | |
tree | 4ea3f4646f10a41d6fe06de3b77eb3a1b6d6a229 /tools/virtio/asm | |
parent | 2989be09a8a9d62a785137586ad941f916e08f83 (diff) | |
download | lwn-a7c490333df3cff5086ddf19a0837529304fa097.tar.gz lwn-a7c490333df3cff5086ddf19a0837529304fa097.zip |
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/virtio/asm')
-rw-r--r-- | tools/virtio/asm/barrier.h | 22 |
1 files changed, 13 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 @@ #if defined(__i386__) || defined(__x86_64__) #define barrier() asm volatile("" ::: "memory") -#define mb() __sync_synchronize() - -#define smp_mb() mb() -# define dma_rmb() barrier() -# define dma_wmb() barrier() -# define smp_rmb() barrier() -# define smp_wmb() barrier() +#define virt_mb() __sync_synchronize() +#define virt_rmb() barrier() +#define virt_wmb() barrier() +/* Atomic store should be enough, but gcc generates worse code in that case. */ +#define virt_store_mb(var, value) do { \ + typeof(var) virt_store_mb_value = (value); \ + __atomic_exchange(&(var), &virt_store_mb_value, &virt_store_mb_value, \ + __ATOMIC_SEQ_CST); \ + barrier(); \ +} while (0); /* Weak barriers should be used. If not - it's a bug */ -# define rmb() abort() -# define wmb() abort() +# define mb() abort() +# define rmb() abort() +# define wmb() abort() #else #error Please fill in barrier macros #endif |