Prev: [3/3] x86: dont send SIGBUS for kernel page faults
Next: [2/3] mm: fix missing page table unmap for stack guard page failure case
From: Mike Frysinger on 13 Aug 2010 17:50 On Mon, May 17, 2010 at 17:21, Ingo Molnar wrote: > arch/alpha/include/asm/bitops.h | 18 +++++---- > arch/ia64/include/asm/bitops.h | 11 +++-- > arch/sparc/include/asm/bitops_64.h | 11 +++-- > arch/x86/include/asm/bitops.h | 4 +- > include/asm-generic/bitops/arch_hweight.h | 25 ++++++++++++ > include/asm-generic/bitops/const_hweight.h | 42 ++++++++++++++++++++ > include/asm-generic/bitops/hweight.h | 8 +--- did this miss Blackfin because the original patch was against the 2.6.34 tree ? just wondering why it now build fails ... doing a simple grep shows that the new "tile" arch may also be broken as it uses "hweight32" ... considering __sw_hweightX only exist when the generic hweight is in play, wouldnt it make sense to have include/asm-generic/bitops/arch_hweight.h not always define things ? then most arches can simply pull in include/asm-generic/bitops/hweight.h without having to worry about the random inner details of hweight cruft. diff --git a/include/asm-generic/bitops/arch_hweight.h b/include/asm-generic/bitops/arch_hweight.h index 6a211f4..3a62e38 100644 --- a/include/asm-generic/bitops/arch_hweight.h +++ b/include/asm-generic/bitops/arch_hweight.h @@ -1,8 +1,15 @@ #ifndef _ASM_GENERIC_BITOPS_ARCH_HWEIGHT_H_ #define _ASM_GENERIC_BITOPS_ARCH_HWEIGHT_H_ +#ifdef CONFIG_GENERIC_HWEIGHT + #include <asm/types.h> +extern unsigned int __sw_hweight8(unsigned int w); +extern unsigned int __sw_hweight16(unsigned int w); +extern unsigned int __sw_hweight32(unsigned int w); +extern unsigned long __sw_hweight64(__u64 w); + static inline unsigned int __arch_hweight32(unsigned int w) { return __sw_hweight32(w); @@ -22,4 +29,7 @@ static inline unsigned long __arch_hweight64(__u64 w) { return __sw_hweight64(w); } + +#endif /* CONFIG_GENERIC_HWEIGHT */ + #endif /* _ASM_GENERIC_BITOPS_HWEIGHT_H_ */ diff --git a/include/linux/bitops.h b/include/linux/bitops.h index fc68053..2e58012 100644 --- a/include/linux/bitops.h +++ b/include/linux/bitops.h @@ -10,11 +10,6 @@ #define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long)) #endif -extern unsigned int __sw_hweight8(unsigned int w); -extern unsigned int __sw_hweight16(unsigned int w); -extern unsigned int __sw_hweight32(unsigned int w); -extern unsigned long __sw_hweight64(__u64 w); - /* * Include this here because some architectures need generic_ffs/fls in * scope -mike -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: H. Peter Anvin on 13 Aug 2010 18:00 On 08/13/2010 02:42 PM, Mike Frysinger wrote: > On Mon, May 17, 2010 at 17:21, Ingo Molnar wrote: >> arch/alpha/include/asm/bitops.h | 18 +++++---- >> arch/ia64/include/asm/bitops.h | 11 +++-- >> arch/sparc/include/asm/bitops_64.h | 11 +++-- >> arch/x86/include/asm/bitops.h | 4 +- >> include/asm-generic/bitops/arch_hweight.h | 25 ++++++++++++ >> include/asm-generic/bitops/const_hweight.h | 42 ++++++++++++++++++++ >> include/asm-generic/bitops/hweight.h | 8 +--- > > did this miss Blackfin because the original patch was against the > 2.6.34 tree ? just wondering why it now build fails ... > > doing a simple grep shows that the new "tile" arch may also be broken > as it uses "hweight32" ... > > considering __sw_hweightX only exist when the generic hweight is in > play, wouldnt it make sense to have > include/asm-generic/bitops/arch_hweight.h not always define things ? > then most arches can simply pull in > include/asm-generic/bitops/hweight.h without having to worry about the > random inner details of hweight cruft. > __sw_hweightX can exist even when generic hweight isn't in use per se, because the arch implementation can wrapper the software implementation. This is the case on x86, for example -- most x86 CPUs don't have popcnt yet, so on those the x86 implementation end up calling the __sw_hweight*() implementations. -hpa -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Mike Frysinger on 13 Aug 2010 18:10 On Fri, Aug 13, 2010 at 17:56, H. Peter Anvin wrote: > On 08/13/2010 02:42 PM, Mike Frysinger wrote: >> On Mon, May 17, 2010 at 17:21, Ingo Molnar wrote: >>> arch/alpha/include/asm/bitops.h | 18 +++++---- >>> arch/ia64/include/asm/bitops.h | 11 +++-- >>> arch/sparc/include/asm/bitops_64.h | 11 +++-- >>> arch/x86/include/asm/bitops.h | 4 +- >>> include/asm-generic/bitops/arch_hweight.h | 25 ++++++++++++ >>> include/asm-generic/bitops/const_hweight.h | 42 ++++++++++++++++++++ >>> include/asm-generic/bitops/hweight.h | 8 +--- >> >> did this miss Blackfin because the original patch was against the >> 2.6.34 tree ? just wondering why it now build fails ... >> >> doing a simple grep shows that the new "tile" arch may also be broken >> as it uses "hweight32" ... >> >> considering __sw_hweightX only exist when the generic hweight is in >> play, wouldnt it make sense to have >> include/asm-generic/bitops/arch_hweight.h not always define things ? >> then most arches can simply pull in >> include/asm-generic/bitops/hweight.h without having to worry about the >> random inner details of hweight cruft. >> > > __sw_hweightX can exist even when generic hweight isn't in use per se, > because the arch implementation can wrapper the software implementation. > This is the case on x86, for example -- most x86 CPUs don't have popcnt > yet, so on those the x86 implementation end up calling the > __sw_hweight*() implementations. but those targets still define CONFIG_GENERIC_HWEIGHT right ? so at the least, we should be wrapping the prototypes in linux/bitops.h with that ... -mike -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: H. Peter Anvin on 13 Aug 2010 20:20
On 08/13/2010 02:59 PM, Mike Frysinger wrote: > > but those targets still define CONFIG_GENERIC_HWEIGHT right ? so at > the least, we should be wrapping the prototypes in linux/bitops.h with > that ... > Yes, I guess they do. -hpa -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |