1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2a439fe51SSam Ravnborg /* 3a439fe51SSam Ravnborg * bitops.h: Bit string operations on the V9. 4a439fe51SSam Ravnborg * 5a439fe51SSam Ravnborg * Copyright 1996, 1997 David S. Miller (davem@caip.rutgers.edu) 6a439fe51SSam Ravnborg */ 7a439fe51SSam Ravnborg 8a439fe51SSam Ravnborg #ifndef _SPARC64_BITOPS_H 9a439fe51SSam Ravnborg #define _SPARC64_BITOPS_H 10a439fe51SSam Ravnborg 11a439fe51SSam Ravnborg #ifndef _LINUX_BITOPS_H 12a439fe51SSam Ravnborg #error only <linux/bitops.h> can be included directly 13a439fe51SSam Ravnborg #endif 14a439fe51SSam Ravnborg 15a439fe51SSam Ravnborg #include <linux/compiler.h> 16a439fe51SSam Ravnborg #include <asm/byteorder.h> 1756d36489SPeter Zijlstra #include <asm/barrier.h> 18a439fe51SSam Ravnborg 19f05a6865SSam Ravnborg int test_and_set_bit(unsigned long nr, volatile unsigned long *addr); 20f05a6865SSam Ravnborg int test_and_clear_bit(unsigned long nr, volatile unsigned long *addr); 21f05a6865SSam Ravnborg int test_and_change_bit(unsigned long nr, volatile unsigned long *addr); 22f05a6865SSam Ravnborg void set_bit(unsigned long nr, volatile unsigned long *addr); 23f05a6865SSam Ravnborg void clear_bit(unsigned long nr, volatile unsigned long *addr); 24f05a6865SSam Ravnborg void change_bit(unsigned long nr, volatile unsigned long *addr); 25a439fe51SSam Ravnborg 2641413a60SVijay Kumar int fls(unsigned int word); 27be52bbe3SVijay Kumar int __fls(unsigned long word); 2841413a60SVijay Kumar 29a439fe51SSam Ravnborg #include <asm-generic/bitops/non-atomic.h> 30a439fe51SSam Ravnborg 31a439fe51SSam Ravnborg #include <asm-generic/bitops/fls64.h> 32a439fe51SSam Ravnborg 33a439fe51SSam Ravnborg #ifdef __KERNEL__ 34a439fe51SSam Ravnborg 35f05a6865SSam Ravnborg int ffs(int x); 36f05a6865SSam Ravnborg unsigned long __ffs(unsigned long); 3756d205ccSDavid S. Miller 3856d205ccSDavid S. Miller #include <asm-generic/bitops/ffz.h> 39a439fe51SSam Ravnborg #include <asm-generic/bitops/sched.h> 40a439fe51SSam Ravnborg 41a439fe51SSam Ravnborg /* 42a439fe51SSam Ravnborg * hweightN: returns the hamming weight (i.e. the number 43a439fe51SSam Ravnborg * of bits set) of a N-bit word 44a439fe51SSam Ravnborg */ 45a439fe51SSam Ravnborg 46f05a6865SSam Ravnborg unsigned long __arch_hweight64(__u64 w); 47f05a6865SSam Ravnborg unsigned int __arch_hweight32(unsigned int w); 48f05a6865SSam Ravnborg unsigned int __arch_hweight16(unsigned int w); 49f05a6865SSam Ravnborg unsigned int __arch_hweight8(unsigned int w); 50a439fe51SSam Ravnborg 511527bc8bSPeter Zijlstra #include <asm-generic/bitops/const_hweight.h> 52a439fe51SSam Ravnborg #include <asm-generic/bitops/lock.h> 53a439fe51SSam Ravnborg #endif /* __KERNEL__ */ 54a439fe51SSam Ravnborg 55a439fe51SSam Ravnborg #ifdef __KERNEL__ 56a439fe51SSam Ravnborg 57861b5ae7SAkinobu Mita #include <asm-generic/bitops/le.h> 58a439fe51SSam Ravnborg 59148817baSAkinobu Mita #include <asm-generic/bitops/ext2-atomic-setbit.h> 60a439fe51SSam Ravnborg 61a439fe51SSam Ravnborg #endif /* __KERNEL__ */ 62a439fe51SSam Ravnborg 63a439fe51SSam Ravnborg #endif /* defined(_SPARC64_BITOPS_H) */ 64