// SPDX-FileCopyrightText: 2018 Michael Jeanson // // SPDX-License-Identifier: MIT /* * Atomic exchange operations for the RISC-V architecture. * * Let the compiler do it. */ #ifndef _URCU_ARCH_UATOMIC_RISCV_H #define _URCU_ARCH_UATOMIC_RISCV_H #include #include /* * See for details. * * The following GCC patches are required to have a working Userspace RCU on * the RISC-V architecture. The were introduced in GCC 14 and backported to * 13.3.0. * * - * - * - */ #ifdef URCU_GCC_VERSION # if (URCU_GCC_VERSION < 130300) && !defined(__NetBSD__) # error "Implementations of some atomic operations of GCC < 13.3.0 for RISC-V are insufficient for sequential consistency. For this reason Userspace RCU is currently marked as 'broken' for RISC-V on these GCC versions." # endif #endif #ifdef __cplusplus extern "C" { #endif #define UATOMIC_HAS_ATOMIC_BYTE #define UATOMIC_HAS_ATOMIC_SHORT #ifdef __cplusplus } #endif #include #endif /* _URCU_ARCH_UATOMIC_RISCV_H */