/* SPDX-License-Identifier: GPL-2.0-only */ #ifndef _ASM_RISCV_FENCE_H #define _ASM_RISCV_FENCE_H #define RISCV_FENCE_ASM(p, s) "\tfence " #p "," #s "\n" #define RISCV_FENCE(p, s) \ ({ __asm__ __volatile__ (RISCV_FENCE_ASM(p, s) : : : "memory"); }) #ifdef CONFIG_SMP #define RISCV_ACQUIRE_BARRIER RISCV_FENCE_ASM(r, rw) #define RISCV_RELEASE_BARRIER RISCV_FENCE_ASM(rw, w) #define RISCV_FULL_BARRIER RISCV_FENCE_ASM(rw, rw) #else #define RISCV_ACQUIRE_BARRIER #define RISCV_RELEASE_BARRIER #define RISCV_FULL_BARRIER #endif #endif /* _ASM_RISCV_FENCE_H */