blob: c2a46d221327d5ba6ff744ea98e7fd21b52f9756 [file] [log] [blame]
#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 */