16ed97c50SPeter Feiner #ifndef _ASMX86_BITOPS_H_ 26ed97c50SPeter Feiner #define _ASMX86_BITOPS_H_ 36ed97c50SPeter Feiner 46ed97c50SPeter Feiner #ifndef _BITOPS_H_ 56ed97c50SPeter Feiner #error only <bitops.h> can be included directly 66ed97c50SPeter Feiner #endif 76ed97c50SPeter Feiner 86ed97c50SPeter Feiner #ifdef __x86_64__ 96ed97c50SPeter Feiner #define BITS_PER_LONG 64 106ed97c50SPeter Feiner #else 116ed97c50SPeter Feiner #define BITS_PER_LONG 32 126ed97c50SPeter Feiner #endif 136ed97c50SPeter Feiner 1471a6a145SAndrew Jones #define HAVE_BUILTIN_FLS 1 1571a6a145SAndrew Jones test_and_set_bit(long nr,unsigned long * addr)16*386ed5c2SOliver Uptonstatic inline void test_and_set_bit(long nr, unsigned long *addr) 17*386ed5c2SOliver Upton { 18*386ed5c2SOliver Upton asm volatile("lock; bts %1,%0" 19*386ed5c2SOliver Upton : "+m" (*addr) 20*386ed5c2SOliver Upton : "Ir" (nr) 21*386ed5c2SOliver Upton : "memory"); 22*386ed5c2SOliver Upton } 23*386ed5c2SOliver Upton 246ed97c50SPeter Feiner #endif 25