From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933904AbcDFJJW (ORCPT ); Wed, 6 Apr 2016 05:09:22 -0400 Received: from m50-133.163.com ([123.125.50.133]:58525 "EHLO m50-133.163.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753084AbcDFJJU (ORCPT ); Wed, 6 Apr 2016 05:09:20 -0400 From: zengzhaoxiu@163.com To: realmz6@gmail.com Cc: adi-buildroot-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org, Zhaoxiu Zeng Subject: [PATCH v2 04/30] Add blackfin-specific parity functions Date: Wed, 6 Apr 2016 16:53:30 +0800 Message-Id: <1459932810-6602-1-git-send-email-zengzhaoxiu@163.com> X-Mailer: git-send-email 2.5.0 In-Reply-To: <57031D9D.801@gmail.com> References: <57031D9D.801@gmail.com> X-CM-TRANSID: DdGowAA3ALGMzgRXHCWRAQ--.15171S2 X-Coremail-Antispam: 1Uf129KBjvJXoW7WF1rZr4rur4kKw1rArW8Zwb_yoW8Wr17pF 1vyrn5tFWkta47ZFWakr1jyF4SvFs3Gr17JrWa93s7JF17tr4UJrnagryDXr4kKF4v9ayY yrZxGFyUGwsrXaDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07jAl19UUUUU= X-Originating-IP: [112.95.225.98] X-CM-SenderInfo: p2hqw6xkdr5xrx6rljoofrz/1tbiJRFDgFUL+7GYyQAAsy Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Zhaoxiu Zeng Signed-off-by: Zhaoxiu Zeng --- arch/blackfin/include/asm/bitops.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/arch/blackfin/include/asm/bitops.h b/arch/blackfin/include/asm/bitops.h index b298b65..6609b7e 100644 --- a/arch/blackfin/include/asm/bitops.h +++ b/arch/blackfin/include/asm/bitops.h @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -137,4 +138,34 @@ static inline unsigned int __arch_hweight8(unsigned int w) return __arch_hweight32(w & 0xff); } +/* + * parityN: returns the parity of a N-bit word, + * i.e. the number of 1-bits in w modulo 2. + */ + +static inline unsigned int __arch_parity32(unsigned int w) +{ + return __arch_hweight32(w) & 1; +} + +static inline unsigned int __arch_parity64(__u64 w) +{ + return __arch_parity32((unsigned int)(w >> 32) ^ (unsigned int)w); +} + +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); +} + #endif /* _BLACKFIN_BITOPS_H */ -- 2.5.0