| #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 */ |