| #ifndef __BACKPORT_ASM_ATOMIC_H |
| #define __BACKPORT_ASM_ATOMIC_H |
| #include_next <asm/atomic.h> |
| #include <linux/version.h> |
| |
| #if LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0) |
| /* |
| * In many versions, several architectures do not seem to include an |
| * atomic64_t implementation, and do not include the software emulation from |
| * asm-generic/atomic64_t. |
| * Detect and handle this here. |
| */ |
| #if (!defined(ATOMIC64_INIT) && !defined(CONFIG_X86) && !(defined(CONFIG_ARM) && !defined(CONFIG_GENERIC_ATOMIC64))) |
| #include <asm-generic/atomic64.h> |
| #endif |
| #endif |
| |
| #ifndef smp_mb__after_atomic |
| #define smp_mb__after_atomic smp_mb__after_clear_bit |
| #endif |
| |
| #endif /* __BACKPORT_ASM_ATOMIC_H */ |