^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #ifndef __BARRIER_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define __BARRIER_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #define mb() __asm__ __volatile__("mb": : :"memory")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #define rmb() __asm__ __volatile__("mb": : :"memory")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #define wmb() __asm__ __volatile__("wmb": : :"memory")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #define __smp_load_acquire(p) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) ({ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) compiletime_assert_atomic_type(*p); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) __READ_ONCE(*p); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #ifdef CONFIG_SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #define __ASM_SMP_MB "\tmb\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #define __ASM_SMP_MB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #include <asm-generic/barrier.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #endif /* __BARRIER_H */