#ifndef _ASM_X86_BITOPS_H
#define _ASM_X86_BITOPS_H
#ifndef _LINUX_BITOPS_H
#error only <linux/bitops.h> can be included directly
#endif
#include <linux/compiler.h>
#include <asm/alternative.h>
#include <asm/rmwcc.h>
#include <asm/barrier.h>
#if BITS_PER_LONG == 32
#define _BITOPS_LONG_SHIFT …
#elif BITS_PER_LONG == 64
#define _BITOPS_LONG_SHIFT …
#else
# error "Unexpected BITS_PER_LONG"
#endif
#define BIT_64(n) …
#define RLONG_ADDR(x) …
#define WBYTE_ADDR(x) …
#define ADDR …
#define CONST_MASK_ADDR(nr, addr) …
#define CONST_MASK(nr) …
static __always_inline void
arch_set_bit(long nr, volatile unsigned long *addr)
{ … }
static __always_inline void
arch___set_bit(unsigned long nr, volatile unsigned long *addr)
{ … }
static __always_inline void
arch_clear_bit(long nr, volatile unsigned long *addr)
{ … }
static __always_inline void
arch_clear_bit_unlock(long nr, volatile unsigned long *addr)
{ … }
static __always_inline void
arch___clear_bit(unsigned long nr, volatile unsigned long *addr)
{ … }
static __always_inline bool arch_xor_unlock_is_negative_byte(unsigned long mask,
volatile unsigned long *addr)
{ … }
#define arch_xor_unlock_is_negative_byte …
static __always_inline void
arch___clear_bit_unlock(long nr, volatile unsigned long *addr)
{ … }
static __always_inline void
arch___change_bit(unsigned long nr, volatile unsigned long *addr)
{ … }
static __always_inline void
arch_change_bit(long nr, volatile unsigned long *addr)
{ … }
static __always_inline bool
arch_test_and_set_bit(long nr, volatile unsigned long *addr)
{ … }
static __always_inline bool
arch_test_and_set_bit_lock(long nr, volatile unsigned long *addr)
{ … }
static __always_inline bool
arch___test_and_set_bit(unsigned long nr, volatile unsigned long *addr)
{ … }
static __always_inline bool
arch_test_and_clear_bit(long nr, volatile unsigned long *addr)
{ … }
static __always_inline bool
arch___test_and_clear_bit(unsigned long nr, volatile unsigned long *addr)
{ … }
static __always_inline bool
arch___test_and_change_bit(unsigned long nr, volatile unsigned long *addr)
{ … }
static __always_inline bool
arch_test_and_change_bit(long nr, volatile unsigned long *addr)
{ … }
static __always_inline bool constant_test_bit(long nr, const volatile unsigned long *addr)
{ … }
static __always_inline bool constant_test_bit_acquire(long nr, const volatile unsigned long *addr)
{ … }
static __always_inline bool variable_test_bit(long nr, volatile const unsigned long *addr)
{ … }
static __always_inline bool
arch_test_bit(unsigned long nr, const volatile unsigned long *addr)
{ … }
static __always_inline bool
arch_test_bit_acquire(unsigned long nr, const volatile unsigned long *addr)
{ … }
static __always_inline unsigned long variable__ffs(unsigned long word)
{ … }
#define __ffs(word) …
static __always_inline unsigned long variable_ffz(unsigned long word)
{ … }
#define ffz(word) …
static __always_inline unsigned long __fls(unsigned long word)
{ … }
#undef ADDR
#ifdef __KERNEL__
static __always_inline int variable_ffs(int x)
{ … }
#define ffs(x) …
static __always_inline int fls(unsigned int x)
{ … }
#ifdef CONFIG_X86_64
static __always_inline int fls64(__u64 x)
{ … }
#else
#include <asm-generic/bitops/fls64.h>
#endif
#include <asm-generic/bitops/sched.h>
#include <asm/arch_hweight.h>
#include <asm-generic/bitops/const_hweight.h>
#include <asm-generic/bitops/instrumented-atomic.h>
#include <asm-generic/bitops/instrumented-non-atomic.h>
#include <asm-generic/bitops/instrumented-lock.h>
#include <asm-generic/bitops/le.h>
#include <asm-generic/bitops/ext2-atomic-setbit.h>
#endif
#endif