1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2015 Cavium, Inc
5 #ifndef _RTE_ATOMIC_ARM64_H_
6 #define _RTE_ATOMIC_ARM64_H_
8 #ifndef RTE_FORCE_INTRINSICS
9 # error Platform must be built with CONFIG_RTE_FORCE_INTRINSICS
16 #include "generic/rte_atomic.h"
18 #define dsb(opt) { asm volatile("dsb " #opt : : : "memory"); }
19 #define dmb(opt) { asm volatile("dmb " #opt : : : "memory"); }
21 #define rte_mb() dsb(sy)
23 #define rte_wmb() dsb(st)
25 #define rte_rmb() dsb(ld)
27 #define rte_smp_mb() dmb(ish)
29 #define rte_smp_wmb() dmb(ishst)
31 #define rte_smp_rmb() dmb(ishld)
33 #define rte_io_mb() rte_mb()
35 #define rte_io_wmb() rte_wmb()
37 #define rte_io_rmb() rte_rmb()
39 #define rte_cio_wmb() dmb(oshst)
41 #define rte_cio_rmb() dmb(oshld)
47 #endif /* _RTE_ATOMIC_ARM64_H_ */