From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1E4EDC4332F for ; Tue, 27 Dec 2022 13:01:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=xEIacvIFA4FdO+oT1cpHk1NuRGWLwdz/eposfS9cWL0=; b=wDxEzxbEWsE6Jq L9lFQ8Q9MlQqjHZEcJBPEb/f+fDFQkw9H+bGebaaZYKOuWHniuBi+yKRv8D1ygGswcEx/wyooErap psVDgLTFlo6o8r/8KawEyJF34ZLtATmQUAthbQ0FRKe740IPw/NjIhpY/GsVpl2WhJDifL4zoYO0D hFHokyRNp+jUbeM0Sm5FZH/vGzoEQ6EwIHC+nbs55O0BHJPA+opFQ+45FcXZDweAUAlUMTyXvhC7D CcAys6l7iBwr/0szNKqYzjpSoGBg0QvKpyhU4aS3Fu0+k47q2H2Z6PsWFnJdemFM7BPcgILSKpGDT 9uX8y7foeoxbsC4bu5vg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pA9YZ-00D4eQ-Lp; Tue, 27 Dec 2022 12:59:47 +0000 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pA9Xi-00D4M9-CK for linux-arm-kernel@lists.infradead.org; Tue, 27 Dec 2022 12:58:56 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id D44FE61122; Tue, 27 Dec 2022 12:58:53 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DC261C433D2; Tue, 27 Dec 2022 12:58:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1672145933; bh=m8cRG5J5CU3+v22jhKANeRH3MCUcNQv0IfTj/2uE4Eg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=R90n3bPlSjs5b6bJH94cDLyb2r/5KaMfRDJgV7beHNelWgwSriJzMNTS9yAS2RlwB Xb8KGly+oIoTI9f1vyBiWkC5nZ/pJc/i6lQe0c5avuWriAZ/06Xx1lsKF+RXlW5xVC 1y7rnXD6qFJURES8wSERnT+Uma/1u9gZSScAVFJZ0Uv8xT/ZBLVqOdctT17LWnP3lP gzNBRjwu7MuJSgjnXjefs248rYNFzElHWK6y7Y9PN+IAx7X8nz2fsJbkQw3Kd53afM rAVo4lygJ+9j90o2es/l5VaqzldWv13LzQp9XhxQis+uQnuFa5+TM7zkahZRlTfM6q aS2HUrJXfrl/w== From: Mark Brown Date: Tue, 27 Dec 2022 12:55:56 +0000 Subject: [PATCH v3 3/7] arm64/sysreg: Allow enumerations to be declared as signed or unsigned MIME-Version: 1.0 Message-Id: <20221207-arm64-sysreg-helpers-v3-3-0d71a7b174a8@kernel.org> References: <20221207-arm64-sysreg-helpers-v3-0-0d71a7b174a8@kernel.org> In-Reply-To: <20221207-arm64-sysreg-helpers-v3-0-0d71a7b174a8@kernel.org> To: Catalin Marinas , Will Deacon Cc: Suzuki K Poulose , James Morse , Mark Rutland , linux-arm-kernel@lists.infradead.org, Mark Brown X-Mailer: b4 0.12-dev-7ab1d X-Developer-Signature: v=1; a=openpgp-sha256; l=2126; i=broonie@kernel.org; h=from:subject:message-id; bh=m8cRG5J5CU3+v22jhKANeRH3MCUcNQv0IfTj/2uE4Eg=; b=owEBbQGS/pANAwAKASTWi3JdVIfQAcsmYgBjquwCMplQEvy7Vo3H0Pk/NW5hmHpXtBnJv2vkG2QN XTNxcF2JATMEAAEKAB0WIQSt5miqZ1cYtZ/in+ok1otyXVSH0AUCY6rsAgAKCRAk1otyXVSH0PKIB/ 4nhKnMYLMxBsHDl1VeFPjEa0+ObaplVhlCH+kzPTSshPsTeYPqd/aSlyN5l8LrMrqwNi6GKswppRMg HDhetDtX/cb/9qzk853rFzUCiG1YRh4MnKl44uV3sTt/9WQRqyoDdblu9qSuJB2elO1iswARfYHGhm Eg2wJY8dy1F6lVcqzP3I4f7mhhq7TL2OaZc0z3DqGXg8IU3sEDFMrcHgoaKrfcAeCUk7JjvRgJVEQY 2YGOCi8KKxmW0n38Vq9lSFW70keBTX1xTki7Rqt1qq9pAkr4SFfA9oKp31ESwb7Sg6vH0FxMeMjqpB /o7jelWcYQ/eAubpi2LXRLXGpYlpzY X-Developer-Key: i=broonie@kernel.org; a=openpgp; fpr=3F2568AAC26998F9E813A1C5C3F436CA30F5D8EB X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221227_045854_594372_DC54EE3A X-CRM114-Status: GOOD ( 11.62 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Many of our enumerations follow a standard scheme where the values can be treated as signed however there are some where the value must be treated as signed and others that are simple enumerations where there is no clear ordering to the values. Provide new field types SignedEnum and UnsignedEnum which allows the signedness to be specified in the sysreg definition and emit a REG_FIELD_SIGNED define for these which is a boolean corresponding to our current FTR_UNSIGNED and FTR_SIGNED macros. Existing Enums will need to be converted, since these do not have a define generated anyone wishing to use the sign of one of these will need to explicitly annotate that field so nothing should start going wrong by default. Acked-by: Mark Rutland Signed-off-by: Mark Brown --- arch/arm64/tools/gen-sysreg.awk | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/arch/arm64/tools/gen-sysreg.awk b/arch/arm64/tools/gen-sysreg.awk index c350164a3955..7f27d66a17e1 100755 --- a/arch/arm64/tools/gen-sysreg.awk +++ b/arch/arm64/tools/gen-sysreg.awk @@ -44,6 +44,11 @@ function define_field(reg, field, msb, lsb) { define(reg "_" field "_WIDTH", msb - lsb + 1) } +# Print a field _SIGNED definition for a field +function define_field_sign(reg, field, sign) { + define(reg "_" field "_SIGNED", sign) +} + # Parse a "[:]" string into the global variables @msb and @lsb function parse_bitdef(reg, field, bitdef, _bits) { @@ -233,6 +238,30 @@ END { next } +/^SignedEnum/ { + change_block("Enum<", "Sysreg", "Enum") + expect_fields(3) + field = $3 + parse_bitdef(reg, field, $2) + + define_field(reg, field, msb, lsb) + define_field_sign(reg, field, "true") + + next +} + +/^UnsignedEnum/ { + change_block("Enum<", "Sysreg", "Enum") + expect_fields(3) + field = $3 + parse_bitdef(reg, field, $2) + + define_field(reg, field, msb, lsb) + define_field_sign(reg, field, "false") + + next +} + /^Enum/ { change_block("Enum", "Sysreg", "Enum") expect_fields(3) -- 2.30.2 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel