Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp3539513ybi; Mon, 27 May 2019 01:37:50 -0700 (PDT) X-Google-Smtp-Source: APXvYqw8/Xg61VOuUj0+U5r00V5lJO6L5x5AfI6CeUAhZozeY3WgGtj6VBbjlyoK/f3jb5lJHqEk X-Received: by 2002:a17:902:9f94:: with SMTP id g20mr8175399plq.56.1558946270805; Mon, 27 May 2019 01:37:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558946270; cv=none; d=google.com; s=arc-20160816; b=wCk+XNcoEqTliQRydztFt8i10PtgyyjhoCNs8d5/JRsxry8X41xLbxGZ61K1eEK3vO SSpbZMgdcuiZFX5h3kOVKcJJ737FOve5TUBiu0lSCq67MksImd8JL1pOhpahlipfOATs AEIKk3wmlfVJ1Vi0OT5FDpyVAm7cEVOsoHNIAvTZVH8wHha4vJxsbV+swAuk/41pTIl6 4q7nDkhXNRkpbYT3Y6GboN1M5g5295KNAfj+xwOklG+CTZolXqSAAblh39VLMkJ8Bjv4 CSIDGo+5iUVgGnnQf7tPL20laqgpI9fCWl9GCXIafAlu63V0oXayG98z1TGite+PUlfv +Jsg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:dkim-filter; bh=45A2T5W61qPsoviArJh2p+JJaGRj8IKGUEzep9QlvkI=; b=BCK7zXyQYsgQYH85HGRGX4bFaiOSexQYtrkqBxXbR6AXIQESR6SSE21S9rnkq8J+vX IS0Zas/A7jQHPIirdCwPxwgDc2t9DOJiL5O6d4xHeQiZV5gNZGVVF5pPlUAQ8SMtWZ1/ FcJt2LlTCqjMeiFh26d1MsIO2/CqiAVRThEtCH1bkkQnAIjKIPjoaAUzjfHssoqYUfr9 unVWDEwhHS9vxy4tRm7qWtl2z5kAi2ufwNP66Bz6BqC4Fn6dbXoXGTyeIdh2aLFNWDI7 Ob9S/zh9nxcjwh3kXaxJJcdQwrNrOzsJu81dJxeYPTyJRdO4ZYcD6gbceT559fmh0bW9 jF/g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nifty.com header.s=dec2015msa header.b=KC5a03Bc; 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 p16si16722606pgd.370.2019.05.27.01.37.34; Mon, 27 May 2019 01:37:50 -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; dkim=pass header.i=@nifty.com header.s=dec2015msa header.b=KC5a03Bc; 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 S1726562AbfE0IfS (ORCPT + 99 others); Mon, 27 May 2019 04:35:18 -0400 Received: from conuserg-10.nifty.com ([210.131.2.77]:51186 "EHLO conuserg-10.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726500AbfE0IfS (ORCPT ); Mon, 27 May 2019 04:35:18 -0400 Received: from localhost.localdomain (p14092-ipngnfx01kyoto.kyoto.ocn.ne.jp [153.142.97.92]) (authenticated) by conuserg-10.nifty.com with ESMTP id x4R8Yoq4030794; Mon, 27 May 2019 17:34:51 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-10.nifty.com x4R8Yoq4030794 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1558946092; bh=45A2T5W61qPsoviArJh2p+JJaGRj8IKGUEzep9QlvkI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KC5a03BcFatHw2Ht8RdXo/6qQt02T3aH5CE8kRYJwu2x5MtspNHSoYPGqUSN3LfIM 2o124MeKsXE0Yw8kRRuf9LdRDpYRoToFVQFcSpC8g+3PPMRCCTQW1fLvTp0ljFAuSC USO7/CDaX482PYpPuDEILX8MnBkTCG/dzGeufIpH14CwdL4Vr9YrRFpIJ/M6PXL0QJ K5kI+VoPmxIQ4gHSbvigY4d1HguDFSt2KDI7c1IKX0n2SqMPqZM/tea3VVEPiwoqsa jN6cJxu+RBrg++NBcP+/HBH+gWq1lnmAz0i0mORROwbCbBH9mRq7tnjo9uC0Bw0QEE Bcz8Lnlv0mv9Q== X-Nifty-SrcIP: [153.142.97.92] From: Masahiro Yamada To: linux-arm-kernel@lists.infradead.org, Will Deacon Cc: linux-kernel@vger.kernel.org, Catalin Marinas , Masahiro Yamada Subject: [PATCH 1/2] linux/bits.h: make BIT(), GENMASK(), and friends available in assembly Date: Mon, 27 May 2019 17:34:11 +0900 Message-Id: <20190527083412.26651-2-yamada.masahiro@socionext.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190527083412.26651-1-yamada.masahiro@socionext.com> References: <20190527083412.26651-1-yamada.masahiro@socionext.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org BIT(), GENMASK(), etc. are useful to define register bits of hardware. However, low-level code is often written in assembly, where they are not available due to the hard-coded 1UL, 0UL. In fact, in-kernel headers such as arch/arm64/include/asm/sysreg.h use _BITUL() instead of BIT() so that the register bit macros are available in assembly. Using macros in include/uapi/linux/const.h have two reasons: [1] For use in uapi headers We should use underscore-prefixed variants for user-space. [2] For use in assembly code Since _BITUL() does not use hard-coded 1UL, it can be used as an alternative of BIT(). For [2], it is pretty easy to change BIT() etc. for use in assembly. This allows to replace _BUTUL() in kernel headers with BIT(). Signed-off-by: Masahiro Yamada --- include/linux/bits.h | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/include/linux/bits.h b/include/linux/bits.h index 2b7b532c1d51..669d69441a62 100644 --- a/include/linux/bits.h +++ b/include/linux/bits.h @@ -1,13 +1,15 @@ /* SPDX-License-Identifier: GPL-2.0 */ #ifndef __LINUX_BITS_H #define __LINUX_BITS_H + +#include #include -#define BIT(nr) (1UL << (nr)) -#define BIT_ULL(nr) (1ULL << (nr)) -#define BIT_MASK(nr) (1UL << ((nr) % BITS_PER_LONG)) +#define BIT(nr) (UL(1) << (nr)) +#define BIT_ULL(nr) (ULL(1) << (nr)) +#define BIT_MASK(nr) (UL(1) << ((nr) % BITS_PER_LONG)) #define BIT_WORD(nr) ((nr) / BITS_PER_LONG) -#define BIT_ULL_MASK(nr) (1ULL << ((nr) % BITS_PER_LONG_LONG)) +#define BIT_ULL_MASK(nr) (ULL(1) << ((nr) % BITS_PER_LONG_LONG)) #define BIT_ULL_WORD(nr) ((nr) / BITS_PER_LONG_LONG) #define BITS_PER_BYTE 8 @@ -17,10 +19,11 @@ * GENMASK_ULL(39, 21) gives us the 64bit vector 0x000000ffffe00000. */ #define GENMASK(h, l) \ - (((~0UL) - (1UL << (l)) + 1) & (~0UL >> (BITS_PER_LONG - 1 - (h)))) + (((~UL(0)) - (UL(1) << (l)) + 1) & \ + (~UL(0) >> (BITS_PER_LONG - 1 - (h)))) #define GENMASK_ULL(h, l) \ - (((~0ULL) - (1ULL << (l)) + 1) & \ - (~0ULL >> (BITS_PER_LONG_LONG - 1 - (h)))) + (((~ULL(0)) - (ULL(1) << (l)) + 1) & \ + (~ULL(0) >> (BITS_PER_LONG_LONG - 1 - (h)))) #endif /* __LINUX_BITS_H */ -- 2.17.1