From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 059DD2D1914 for ; Thu, 23 Apr 2026 05:29:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776922159; cv=none; b=hxWaWYSBFUfDbdEEy7OggmPbfX4wJoLV7ZEj3ZfHvMJGtNF42Yh5yixpDxurOoYe02JQu+0tChR3RsvuUwxd7XmaRmsgtv6UdYaJYFC8Gz9CQK+v8g278Ag/NgySIu6YSW2dFVsuiRofaPP0/yEXdHJcvwQK+Y/uO4RyUAQSFO8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776922159; c=relaxed/simple; bh=a/Gferl6Ip7Lk6/VUR4Vt+kpHvJL7Ab6LWtLtcSt4GQ=; h=Message-ID:Date:MIME-Version:From:Subject:To:References: In-Reply-To:Content-Type; b=Uim4P5bpDGlhic5jG9wngi/NIaZCGdww2CEiAzbGYuRt0fd6tlLGqMTTum0laX+3QkqzQHKosKt/3bdD7qxytkZ3cT6j9rsFujAfu0gfBjRn6H0Ii1Kpzey+/o2VUfvPRTcHfvfbXUJWOD6mLmMn288Qj6IJjoVD/Iy9VapZ6b0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=ZH8gZLMc; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="ZH8gZLMc" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 839002681; Wed, 22 Apr 2026 22:29:10 -0700 (PDT) Received: from [10.163.145.28] (unknown [10.163.145.28]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id D5A4A3F23F; Wed, 22 Apr 2026 22:29:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1776922156; bh=a/Gferl6Ip7Lk6/VUR4Vt+kpHvJL7Ab6LWtLtcSt4GQ=; h=Date:From:Subject:To:References:In-Reply-To:From; b=ZH8gZLMc9xdlaBUerf0HwYAw1gGXv8e/ZiLMCaas1EpZInMLUB0uNEJwGCJFFWqES yjLEbrh+efuIs0rGVT48eJZ8HEUhCTwxEm2b1XJDehUaMtshn9k9EQOWuuDW1UdyWh mmNjS4XE33RvVMnFUTE1h8+6OVoItYDyW4H4qPWk= Message-ID: Date: Thu, 23 Apr 2026 10:59:09 +0530 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Anshuman Khandual Subject: Re: [PATCH] arm64: traps: Add a macro to simplify the condition codes check To: Jinjie Ruan , catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, kees@kernel.org, maz@kernel.org, ada.coupriediaz@arm.com, smostafa@google.com, leitao@debian.org, mrigendra.chaubey@gmail.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org References: <20260320082846.1235016-1-ruanjinjie@huawei.com> Content-Language: en-US In-Reply-To: <20260320082846.1235016-1-ruanjinjie@huawei.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 20/03/26 1:58 PM, Jinjie Ruan wrote: > Add DEFINE_COND_CHECK macro to define the simple __check_* functions > to simplify the condition codes check. > > No functional changes. > > Signed-off-by: Jinjie Ruan > --- > arch/arm64/kernel/traps.c | 59 ++++++++++----------------------------- > 1 file changed, 15 insertions(+), 44 deletions(-) > > diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c > index 914282016069..6216fe9e8e42 100644 > --- a/arch/arm64/kernel/traps.c > +++ b/arch/arm64/kernel/traps.c > @@ -49,45 +49,21 @@ > #include > #include > > -static bool __kprobes __check_eq(unsigned long pstate) > -{ > - return (pstate & PSR_Z_BIT) != 0; > -} > - > -static bool __kprobes __check_ne(unsigned long pstate) > -{ > - return (pstate & PSR_Z_BIT) == 0; > -} > - > -static bool __kprobes __check_cs(unsigned long pstate) > -{ > - return (pstate & PSR_C_BIT) != 0; > -} > - > -static bool __kprobes __check_cc(unsigned long pstate) > -{ > - return (pstate & PSR_C_BIT) == 0; > -} > - > -static bool __kprobes __check_mi(unsigned long pstate) > -{ > - return (pstate & PSR_N_BIT) != 0; > -} > - > -static bool __kprobes __check_pl(unsigned long pstate) > -{ > - return (pstate & PSR_N_BIT) == 0; > -} > - > -static bool __kprobes __check_vs(unsigned long pstate) > -{ > - return (pstate & PSR_V_BIT) != 0; > -} > - > -static bool __kprobes __check_vc(unsigned long pstate) > -{ > - return (pstate & PSR_V_BIT) == 0; > -} > +#define DEFINE_COND_CHECK(name, flag, expected) \ > +static bool __kprobes __check_##name(unsigned long pstate) \ > +{ \ > + return ((pstate & (flag)) != 0) == (expected); \ > +} > + > +DEFINE_COND_CHECK(eq, PSR_Z_BIT, true) > +DEFINE_COND_CHECK(ne, PSR_Z_BIT, false) > +DEFINE_COND_CHECK(cs, PSR_C_BIT, true) > +DEFINE_COND_CHECK(cc, PSR_C_BIT, false) > +DEFINE_COND_CHECK(mi, PSR_N_BIT, true) > +DEFINE_COND_CHECK(pl, PSR_N_BIT, false) > +DEFINE_COND_CHECK(vs, PSR_V_BIT, true) > +DEFINE_COND_CHECK(vc, PSR_V_BIT, false) > +DEFINE_COND_CHECK(al, 0, false) /* Always true */ (((pstate & 0 == 0) != 0) == false) ---> return true Although this looks OK but wondering if __check_al() should be left unchanged for simplicity. OR could all its call sites be changed assuming an unconditional 'true' return thus later __check_al() can be dropped. > > static bool __kprobes __check_hi(unsigned long pstate) > { > @@ -131,11 +107,6 @@ static bool __kprobes __check_le(unsigned long pstate) > return (temp & PSR_N_BIT) != 0; > } > > -static bool __kprobes __check_al(unsigned long pstate) > -{ > - return true; > -} > - > /* > * Note that the ARMv8 ARM calls condition code 0b1111 "nv", but states that > * it behaves identically to 0b1110 ("al").