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