1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2015 RehiveTech. All rights reserved. 3 */ 4 5 #ifndef _RTE_ATOMIC_ARM32_H_ 6 #define _RTE_ATOMIC_ARM32_H_ 7 8 #ifndef RTE_FORCE_INTRINSICS 9 # error Platform must be built with RTE_FORCE_INTRINSICS 10 #endif 11 12 #include "generic/rte_atomic.h" 13 14 #ifdef __cplusplus 15 extern "C" { 16 #endif 17 18 #define rte_mb() __sync_synchronize() 19 20 #define rte_wmb() do { asm volatile ("dmb st" : : : "memory"); } while (0) 21 22 #define rte_rmb() __sync_synchronize() 23 24 #define rte_smp_mb() rte_mb() 25 26 #define rte_smp_wmb() rte_wmb() 27 28 #define rte_smp_rmb() rte_rmb() 29 30 #define rte_io_mb() rte_mb() 31 32 #define rte_io_wmb() rte_wmb() 33 34 #define rte_io_rmb() rte_rmb() 35 36 static __rte_always_inline void 37 rte_atomic_thread_fence(rte_memory_order memorder) 38 { 39 __rte_atomic_thread_fence(memorder); 40 } 41 42 #ifdef __cplusplus 43 } 44 #endif 45 46 #endif /* _RTE_ATOMIC_ARM32_H_ */ 47