Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755147AbcC1RZK (ORCPT ); Mon, 28 Mar 2016 13:25:10 -0400 Received: from mail-pa0-f65.google.com ([209.85.220.65]:36727 "EHLO mail-pa0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753149AbcC1RZG (ORCPT ); Mon, 28 Mar 2016 13:25:06 -0400 Message-ID: <56F968EE.1000307@gmail.com> Date: Mon, 28 Mar 2016 10:25:02 -0700 From: David Daney User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130625 Thunderbird/17.0.7 MIME-Version: 1.0 To: "zhaoxiu.zeng" CC: Ralf Baechle , Leonid Yegoshin , "Maciej W. Rozycki" , linux-kernel@vger.kernel.org, linux-mips@linux-mips.org Subject: Re: [PATCH 07/31] Add mips-specific parity functions References: <1458788612-4367-1-git-send-email-zhaoxiu.zeng@gmail.com> <56F7785F.1090101@gmail.com> In-Reply-To: <56F7785F.1090101@gmail.com> Content-Type: text/plain; charset=gbk; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2448 Lines: 85 On 03/26/2016 11:06 PM, zhaoxiu.zeng wrote: > From: Zeng Zhaoxiu > 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 > Signed-off-by: Zeng Zhaoxiu > --- > 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 > + > +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 > +#include > +#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 > #include > > +#include > +#include > + > #include > #include > >