Commit 1a403d1d authored by David Daney's avatar David Daney Committed by Ralf Baechle
Browse files

MIPS: Create and use asm/arch_hweight.h

Some MIPS ISA processor varients can do hweight operations

Split arch_hweight.h into a seperate file, and implement the
operations with __builtin_popcount{,ll} if supported.
Signed-off-by: default avatarDavid Daney <>
Cc: David Daney <>

Signed-off-by: default avatarRalf Baechle <>
parent d16f7093
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
* for more details.
#include <asm/types.h>
static inline unsigned int __arch_hweight32(unsigned int w)
return __builtin_popcount(w);
static inline unsigned int __arch_hweight16(unsigned int w)
return __builtin_popcount(w & 0xffff);
static inline unsigned int __arch_hweight8(unsigned int w)
return __builtin_popcount(w & 0xff);
static inline unsigned long __arch_hweight64(__u64 w)
return __builtin_popcountll(w);
#include <asm-generic/bitops/arch_hweight.h>
#endif /* _ASM_ARCH_HWEIGHT_H */
......@@ -700,7 +700,10 @@ static inline int ffs(int word)
#ifdef __KERNEL__
#include <asm-generic/bitops/sched.h>
#include <asm-generic/bitops/hweight.h>
#include <asm/arch_hweight.h>
#include <asm-generic/bitops/const_hweight.h>
#include <asm-generic/bitops/ext2-non-atomic.h>
#include <asm-generic/bitops/ext2-atomic.h>
#include <asm-generic/bitops/minix.h>
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment