1#ifndef _ASM_RISCV_FENCE_H 2#define _ASM_RISCV_FENCE_H 3 4#define RISCV_FENCE_ASM(p, s) "\tfence " #p "," #s "\n" 5#define RISCV_FENCE(p, s) \ 6 ({ __asm__ __volatile__ (RISCV_FENCE_ASM(p, s) : : : "memory"); }) 7 8#ifdef CONFIG_SMP 9#define RISCV_ACQUIRE_BARRIER RISCV_FENCE_ASM(r, rw) 10#define RISCV_RELEASE_BARRIER RISCV_FENCE_ASM(rw, w) 11#define RISCV_FULL_BARRIER RISCV_FENCE_ASM(rw, rw) 12#else 13#define RISCV_ACQUIRE_BARRIER 14#define RISCV_RELEASE_BARRIER 15#define RISCV_FULL_BARRIER 16#endif 17 18#endif /* _ASM_RISCV_FENCE_H */ 19