Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) #ifndef _ASM_GENERIC_BITOPS_CONST_HWEIGHT_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3) #define _ASM_GENERIC_BITOPS_CONST_HWEIGHT_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6)  * Compile time versions of __arch_hweightN()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) #define __const_hweight8(w)		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) 	((unsigned int)			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) 	 ((!!((w) & (1ULL << 0))) +	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) 	  (!!((w) & (1ULL << 1))) +	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) 	  (!!((w) & (1ULL << 2))) +	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 	  (!!((w) & (1ULL << 3))) +	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) 	  (!!((w) & (1ULL << 4))) +	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) 	  (!!((w) & (1ULL << 5))) +	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) 	  (!!((w) & (1ULL << 6))) +	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) 	  (!!((w) & (1ULL << 7)))))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #define __const_hweight16(w) (__const_hweight8(w)  + __const_hweight8((w)  >> 8 ))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #define __const_hweight32(w) (__const_hweight16(w) + __const_hweight16((w) >> 16))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #define __const_hweight64(w) (__const_hweight32(w) + __const_hweight32((w) >> 32))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)  * Generic interface.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #define hweight8(w)  (__builtin_constant_p(w) ? __const_hweight8(w)  : __arch_hweight8(w))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #define hweight16(w) (__builtin_constant_p(w) ? __const_hweight16(w) : __arch_hweight16(w))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #define hweight32(w) (__builtin_constant_p(w) ? __const_hweight32(w) : __arch_hweight32(w))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) #define hweight64(w) (__builtin_constant_p(w) ? __const_hweight64(w) : __arch_hweight64(w))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)  * Interface for known constant arguments
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #define HWEIGHT8(w)  (BUILD_BUG_ON_ZERO(!__builtin_constant_p(w)) + __const_hweight8(w))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) #define HWEIGHT16(w) (BUILD_BUG_ON_ZERO(!__builtin_constant_p(w)) + __const_hweight16(w))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) #define HWEIGHT32(w) (BUILD_BUG_ON_ZERO(!__builtin_constant_p(w)) + __const_hweight32(w))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) #define HWEIGHT64(w) (BUILD_BUG_ON_ZERO(!__builtin_constant_p(w)) + __const_hweight64(w))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)  * Type invariant interface to the compile time constant hweight functions.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) #define HWEIGHT(w)   HWEIGHT64((u64)w)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) #endif /* _ASM_GENERIC_BITOPS_CONST_HWEIGHT_H_ */