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
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
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