129631ee5SMin Zhou /* SPDX-License-Identifier: BSD-3-Clause 229631ee5SMin Zhou * Copyright(c) 2022 Loongson Technology Corporation Limited 329631ee5SMin Zhou */ 429631ee5SMin Zhou 529631ee5SMin Zhou #ifndef RTE_ATOMIC_LOONGARCH_H 629631ee5SMin Zhou #define RTE_ATOMIC_LOONGARCH_H 729631ee5SMin Zhou 829631ee5SMin Zhou #ifndef RTE_FORCE_INTRINSICS 929631ee5SMin Zhou # error Platform must be built with RTE_FORCE_INTRINSICS 1029631ee5SMin Zhou #endif 1129631ee5SMin Zhou 12*719834a6SMattias Rönnblom #include <rte_common.h> 13*719834a6SMattias Rönnblom #include "generic/rte_atomic.h" 14*719834a6SMattias Rönnblom 1529631ee5SMin Zhou #ifdef __cplusplus 1629631ee5SMin Zhou extern "C" { 1729631ee5SMin Zhou #endif 1829631ee5SMin Zhou 1929631ee5SMin Zhou #define rte_mb() do { asm volatile("dbar 0":::"memory"); } while (0) 2029631ee5SMin Zhou 2129631ee5SMin Zhou #define rte_wmb() rte_mb() 2229631ee5SMin Zhou 2329631ee5SMin Zhou #define rte_rmb() rte_mb() 2429631ee5SMin Zhou 2529631ee5SMin Zhou #define rte_smp_mb() rte_mb() 2629631ee5SMin Zhou 2729631ee5SMin Zhou #define rte_smp_wmb() rte_mb() 2829631ee5SMin Zhou 2929631ee5SMin Zhou #define rte_smp_rmb() rte_mb() 3029631ee5SMin Zhou 3129631ee5SMin Zhou #define rte_io_mb() rte_mb() 3229631ee5SMin Zhou 3329631ee5SMin Zhou #define rte_io_wmb() rte_mb() 3429631ee5SMin Zhou 3529631ee5SMin Zhou #define rte_io_rmb() rte_mb() 3629631ee5SMin Zhou 3729631ee5SMin Zhou static __rte_always_inline void 381ec6a845STyler Retzlaff rte_atomic_thread_fence(rte_memory_order memorder) 3929631ee5SMin Zhou { 401ec6a845STyler Retzlaff __rte_atomic_thread_fence(memorder); 4129631ee5SMin Zhou } 4229631ee5SMin Zhou 4329631ee5SMin Zhou #ifdef __cplusplus 4429631ee5SMin Zhou } 4529631ee5SMin Zhou #endif 4629631ee5SMin Zhou 4729631ee5SMin Zhou #endif /* RTE_ATOMIC_LOONGARCH_H */ 48