Received: by 2002:a4a:301c:0:0:0:0:0 with SMTP id q28-v6csp367807oof; Mon, 24 Sep 2018 22:05:37 -0700 (PDT) X-Google-Smtp-Source: ACcGV60beRPVXj+h7BY21c/dz+AhrtxDOPZSjoSo2IOnra7sSbD+r9tPexSS89CABgw31pOgdMQr X-Received: by 2002:a17:902:e281:: with SMTP id cf1-v6mr1758006plb.86.1537851937258; Mon, 24 Sep 2018 22:05:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1537851937; cv=none; d=google.com; s=arc-20160816; b=0kBlEn6zr1gPwbMvGNo10Q1JNG5EQ0iofRwlXsOBtji8Wgc0S9WfbeYgabj6Md8GrI z8UQUDrL4ADoThqsn9f7bOhoeuvOciE6wUa38XUlNOHFxeWlxPYJw/yhU21ibT69/cIX XcDe0VlCr1CuGDjvdF6l54imrkHpcRqsi6NQY6fgRRsC2VI5mAJRJTK843Ugybmn5xl3 26qrnMbMus2QviIr3qK/JoKFEWMUwZwdQYSmUWOlGaQsfAAKJGZQ2f8x2pW7nu7owue8 5WjnBImOXKzrXLtn+sRjCuA+GD8xwkFgEQt56yz/hI0kl/DW+sPs/BV+2mg4Ykzdr1lZ P7ZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=aRz8Qlr10PtJcaGDlM/ZYkxuq3JzCnR2r8JfEhciaWc=; b=FkjtDWEZiBy8zvWzjsmSXXMh2WIUEmrMMddl9g6+HB19BAJvYadJs9DeHeSmjLKDCN 5ymJuQ9jQSMJjpKbcfT+G2tOPEqMPRmYiCZw/Q7e4glZuTOBcnnsYqKGAULHbgq+GoMY XRI+SXbkU+7b3My4dHsNFD3eLikESQg6OLaWwHbi7H2qqui6MSSzkAlq8JsN4uS5RLul 6J0vwxGPAwkZl8+wa+Nnux75jvQjb4AV0xYbGU1nKXtT+L7mS7ZGuEF9b32mESYDxrMv 1TsOay9vfs2WVUOYtYpQ5bfteQWNdtOX9xrI95Jv0z5t8sAUeSnNpFJ5VN05ZYXn5s+2 qOuA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q4-v6si1341888pli.250.2018.09.24.22.05.19; Mon, 24 Sep 2018 22:05:37 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726255AbeIYLK7 (ORCPT + 99 others); Tue, 25 Sep 2018 07:10:59 -0400 Received: from pegase1.c-s.fr ([93.17.236.30]:41689 "EHLO pegase1.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725963AbeIYLK6 (ORCPT ); Tue, 25 Sep 2018 07:10:58 -0400 Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 42K8C11yTCz9ttRd; Tue, 25 Sep 2018 07:05:01 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at c-s.fr Received: from pegase1.c-s.fr ([192.168.12.234]) by localhost (pegase1.c-s.fr [192.168.12.234]) (amavisd-new, port 10024) with ESMTP id EBBPNS03tboP; Tue, 25 Sep 2018 07:05:01 +0200 (CEST) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase1.c-s.fr (Postfix) with ESMTP id 42K8C10kSMz9ttCD; Tue, 25 Sep 2018 07:05:01 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id D9B708B7C0; Tue, 25 Sep 2018 07:05:02 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id 9vzRmtp7Xgio; Tue, 25 Sep 2018 07:05:02 +0200 (CEST) Received: from PO15451 (unknown [192.168.232.3]) by messagerie.si.c-s.fr (Postfix) with ESMTP id EE9618B762; Tue, 25 Sep 2018 07:05:00 +0200 (CEST) Subject: Re: [PATCH v2 2/7] include: add setbits32/clrbits32/clrsetbits32/setbits64/clrbits64/clrsetbits64 in linux/setbits.h To: Corentin Labbe , Gilles.Muller@lip6.fr, Julia.Lawall@lip6.fr, agust@denx.de, airlied@linux.ie, alexandre.torgue@st.com, alistair@popple.id.au, benh@kernel.crashing.org, carlo@caione.org, davem@davemloft.net, galak@kernel.crashing.org, joabreu@synopsys.com, khilman@baylibre.com, maxime.ripard@bootlin.com, michal.lkml@markovi.net, mpe@ellerman.id.au, mporter@kernel.crashing.org, narmstrong@baylibre.com, nicolas.palix@imag.fr, oss@buserror.net, paulus@samba.org, peppe.cavallaro@st.com, tj@kernel.org, vitb@kernel.crashing.org, wens@csie.org Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-ide@vger.kernel.org, linux-amlogic@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, cocci@systeme.lip6.fr, linux-arm-kernel@lists.infradead.org References: <1537815856-31728-1-git-send-email-clabbe@baylibre.com> <1537815856-31728-3-git-send-email-clabbe@baylibre.com> From: Christophe LEROY Message-ID: <4a63152f-9eca-f7d9-8fe6-59caaab33666@c-s.fr> Date: Tue, 25 Sep 2018 07:05:00 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <1537815856-31728-3-git-send-email-clabbe@baylibre.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: fr Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Le 24/09/2018 à 21:04, Corentin Labbe a écrit : > This patch adds setbits32/clrbits32/clrsetbits32 and > setbits64/clrbits64/clrsetbits64 in linux/setbits.h header. Fix the patch subject and description. > > Signed-off-by: Corentin Labbe > --- > include/linux/setbits.h | 88 +++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 88 insertions(+) > create mode 100644 include/linux/setbits.h > > diff --git a/include/linux/setbits.h b/include/linux/setbits.h > new file mode 100644 > index 000000000000..6e7e257134ae > --- /dev/null > +++ b/include/linux/setbits.h > @@ -0,0 +1,88 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +#ifndef __LINUX_SETBITS_H > +#define __LINUX_SETBITS_H > + > +#include > + > +#define __setbits(readfunction, writefunction, addr, set) \ > + writefunction((readfunction(addr) | (set)), addr) You don't need so long names for parameters in a 2 lines macro (See Linux Kernel Codying style §4 Naming). A single line macro would be feasible with only 3 chars names: #define __setbits(rfn, wfn, addr, set) wfn((rfn(addr) | (set)), addr) > +#define __clrbits(readfunction, writefunction, addr, mask) \ > + writefunction((readfunction(addr) & ~(mask)), addr) > +#define __clrsetbits(readfunction, writefunction, addr, mask, set) \ > + writefunction(((readfunction(addr) & ~(mask)) | (set)), addr) > +#define __setclrbits(readfunction, writefunction, addr, mask, set) \ > + writefunction(((readfunction(addr) | (set)) & ~(mask)), addr) > + > +#ifndef setbits_le32 > +#define setbits_le32(addr, set) __setbits(readl, writel, addr, set) > +#endif > +#ifndef setbits_le32_relaxed > +#define setbits_le32_relaxed(addr, set) __setbits(readl_relaxed, writel_relaxed, \ > + addr, set) > +#endif > + > +#ifndef clrbits_le32 > +#define clrbits_le32(addr, mask) __clrbits(readl, writel, addr, mask) > +#endif > +#ifndef clrbits_le32_relaxed > +#define clrbits_le32_relaxed(addr, mask) __clrbits(readl_relaxed, writel_relaxed, \ > + addr, mask) > +#endif > + > +#ifndef clrsetbits_le32 > +#define clrsetbits_le32(addr, mask, set) __clrsetbits(readl, writel, addr, mask, set) > +#endif > +#ifndef clrsetbits_le32_relaxed > +#define clrsetbits_le32_relaxed(addr, mask, set) __clrsetbits(readl_relaxed, \ > + writel_relaxed, \ > + addr, mask, set) > +#endif > + > +#ifndef setclrbits_le32 > +#define setclrbits_le32(addr, mask, set) __setclrbits(readl, writel, addr, mask, set) > +#endif > +#ifndef setclrbits_le32_relaxed > +#define setclrbits_le32_relaxed(addr, mask, set) __setclrbits(readl_relaxed, \ > + writel_relaxed, \ > + addr, mask, set) > +#endif > + > +/* We cannot use CONFIG_64BIT as some x86 drivers use non-atomicwriteq() */ > +#if defined(writeq) && defined(readq) Take care. At least Alpha Arch defines it as a static inline without redefining it as a #define. (see arch/alpha/kernel/io.c) Christophe > +#ifndef setbits_le64 > +#define setbits_le64(addr, set) __setbits(readq, writeq, addr, set) > +#endif > +#ifndef setbits_le64_relaxed > +#define setbits_le64_relaxed(addr, set) __setbits(readq_relaxed, writeq_relaxed, \ > + addr, set) > +#endif > + > +#ifndef clrbits_le64 > +#define clrbits_le64(addr, mask) __clrbits(readq, writeq, addr, mask) > +#endif > +#ifndef clrbits_le64_relaxed > +#define clrbits_le64_relaxed(addr, mask) __clrbits(readq_relaxed, writeq_relaxed, \ > + addr, mask) > +#endif > + > +#ifndef clrsetbits_le64 > +#define clrsetbits_le64(addr, mask, set) __clrsetbits(readq, writeq, addr, mask, set) > +#endif > +#ifndef clrsetbits_le64_relaxed > +#define clrsetbits_le64_relaxed(addr, mask, set) __clrsetbits(readq_relaxed, \ > + writeq_relaxed, \ > + addr, mask, set) > +#endif > + > +#ifndef setclrbits_le64 > +#define setclrbits_le64(addr, mask, set) __setclrbits(readq, writeq, addr, mask, set) > +#endif > +#ifndef setclrbits_le64_relaxed > +#define setclrbits_le64_relaxed(addr, mask, set) __setclrbits(readq_relaxed, \ > + writeq_relaxed, \ > + addr, mask, set) > +#endif > + > +#endif /* writeq/readq */ > + > +#endif /* __LINUX_SETBITS_H */ >