]> git.proxmox.com Git - ceph.git/blob - ceph/src/spdk/dpdk/lib/librte_eal/common/include/arch/arm/rte_atomic_64.h
update sources to ceph Nautilus 14.2.1
[ceph.git] / ceph / src / spdk / dpdk / lib / librte_eal / common / include / arch / arm / rte_atomic_64.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2015 Cavium, Inc
3 */
4
5 #ifndef _RTE_ATOMIC_ARM64_H_
6 #define _RTE_ATOMIC_ARM64_H_
7
8 #ifndef RTE_FORCE_INTRINSICS
9 # error Platform must be built with CONFIG_RTE_FORCE_INTRINSICS
10 #endif
11
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15
16 #include "generic/rte_atomic.h"
17
18 #define dsb(opt) asm volatile("dsb " #opt : : : "memory")
19 #define dmb(opt) asm volatile("dmb " #opt : : : "memory")
20
21 #define rte_mb() dsb(sy)
22
23 #define rte_wmb() dsb(st)
24
25 #define rte_rmb() dsb(ld)
26
27 #define rte_smp_mb() dmb(ish)
28
29 #define rte_smp_wmb() dmb(ishst)
30
31 #define rte_smp_rmb() dmb(ishld)
32
33 #define rte_io_mb() rte_mb()
34
35 #define rte_io_wmb() rte_wmb()
36
37 #define rte_io_rmb() rte_rmb()
38
39 #define rte_cio_wmb() dmb(oshst)
40
41 #define rte_cio_rmb() dmb(oshld)
42
43 #ifdef __cplusplus
44 }
45 #endif
46
47 #endif /* _RTE_ATOMIC_ARM64_H_ */