lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 29 Mar 2016 10:15:48 +0800 From: Zeng Zhaoxiu <zhaoxiu.zeng@...il.com> To: David Daney <ddaney.cavm@...il.com> Cc: Ralf Baechle <ralf@...ux-mips.org>, Leonid Yegoshin <Leonid.Yegoshin@...tec.com>, "Maciej W. Rozycki" <macro@...ux-mips.org>, linux-kernel@...r.kernel.org, linux-mips@...ux-mips.org Subject: Re: [PATCH 07/31] Add mips-specific parity functions 在 2016年03月29日 01:25, David Daney 写道: > On 03/26/2016 11:06 PM, zhaoxiu.zeng wrote: >> From: Zeng Zhaoxiu <zhaoxiu.zeng@...il.com> >> > > There is nothing MIPS specific here. Why not put it in asm-generic or > some similar place where it can be shared by all architectures? > > Also, are you sure __builtin_popcount() is available on all GCC > versions that are supported for building the kernel? > > David Daney > Refrence to arch_hweight.h. In the 68th line of arch/mips/include/asm/mach-cavium-octeon/cpu-feature-overrides.h, we can see: #ifdef __OCTEON__ /* * All gcc versions that have OCTEON support define __OCTEON__ and have the * __builtin_popcount support. */ #define ARCH_HAS_USABLE_BUILTIN_POPCOUNT 1 #endif /* * All gcc versions that have OCTEON support define __OCTEON__ and have the * __builtin_popcount support. */ >> Signed-off-by: Zeng Zhaoxiu <zhaoxiu.zeng@...il.com> >> --- >> arch/mips/include/asm/arch_parity.h | 44 >> +++++++++++++++++++++++++++++++++++++ >> arch/mips/include/asm/bitops.h | 3 +++ >> 2 files changed, 47 insertions(+) >> create mode 100644 arch/mips/include/asm/arch_parity.h >> >> diff --git a/arch/mips/include/asm/arch_parity.h >> b/arch/mips/include/asm/arch_parity.h >> new file mode 100644 >> index 0000000..23b3c23 >> --- /dev/null >> +++ b/arch/mips/include/asm/arch_parity.h >> @@ -0,0 +1,44 @@ >> +/* >> + * 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. >> + * >> + */ >> +#ifndef _ASM_ARCH_PARITY_H >> +#define _ASM_ARCH_PARITY_H >> + >> +#ifdef ARCH_HAS_USABLE_BUILTIN_POPCOUNT >> + >> +#include <asm/types.h> >> + >> +static inline unsigned int __arch_parity32(unsigned int w) >> +{ >> + return __builtin_popcount(w) & 1; >> +} >> + >> +static inline unsigned int __arch_parity16(unsigned int w) >> +{ >> + return __arch_parity32(w & 0xffff); >> +} >> + >> +static inline unsigned int __arch_parity8(unsigned int w) >> +{ >> + return __arch_parity32(w & 0xff); >> +} >> + >> +static inline unsigned int __arch_parity4(unsigned int w) >> +{ >> + return __arch_parity32(w & 0xf); >> +} >> + >> +static inline unsigned int __arch_parity64(__u64 w) >> +{ >> + return (unsigned int)__builtin_popcountll(w) & 1; >> +} >> + >> +#else >> +#include <asm-generic/bitops/arch_hweight.h> >> +#include <asm-generic/bitops/arch_parity.h> >> +#endif >> + >> +#endif /* _ASM_ARCH_PARITY_H */ >> diff --git a/arch/mips/include/asm/bitops.h >> b/arch/mips/include/asm/bitops.h >> index ce9666c..0b87734 100644 >> --- a/arch/mips/include/asm/bitops.h >> +++ b/arch/mips/include/asm/bitops.h >> @@ -626,6 +626,9 @@ static inline int ffs(int word) >> #include <asm/arch_hweight.h> >> #include <asm-generic/bitops/const_hweight.h> >> >> +#include <asm/arch_parity.h> >> +#include <asm-generic/bitops/const_parity.h> >> + >> #include <asm-generic/bitops/le.h> >> #include <asm-generic/bitops/ext2-atomic.h> >> >> >
Powered by blists - more mailing lists