From nobody Mon Dec 15 21:43:52 2025 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1B87A19258E for ; Wed, 15 Jan 2025 16:28:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736958506; cv=none; b=kr2KmB2W6ULNqk3EXSXS3Q+Lxjkr9h+FgstKiTM0I4ZRa/K9t/AkVkcjSOlby2aTSMMJzy/jbYT2Zgq3wySOFEgZSSEUJqIjd7BHZTrBSNUilC2O1dHC7xbkPys5QzfWRPBk3fRTNflFGIpEsmnSccJH6+R5y8+4BfUqMgpGLJk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736958506; c=relaxed/simple; bh=YCE8ymdGPEvZ/Ud2my8+eDlMmwDf0ILj5aK7GWQKP4A=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=JucJ2f6xyi51PZziYaUenDfvcqmwBtwXjFOB5QGkaP1CDgWIJClOSMS+JnCLTrmzvrJRC4tMB50K7MYnEbAtK9WlkTgveNnPv6IsZH+MSu2ARDXAuvXXOwVqiEQAY/r2oOm/gHx3TFQun6wIo8mfBMzbIptFCfrYHntFLnMlrw8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=jLkJqIpD; arc=none smtp.client-ip=209.85.128.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="jLkJqIpD" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-4362bae4d7dso49969315e9.1 for ; Wed, 15 Jan 2025 08:28:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1736958502; x=1737563302; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Zjd4L+skRjDfREyt5/l20Z/nbYutI6PIQ0sn5+CJWLE=; b=jLkJqIpDgSxhPgQpnckAymjmTOY6ULMBmNS71R9CChVvQB1rw3OQuUpEVrBfvsIlKt s6rfz/rMaJ8IXrNKtY8vQFSj4eCFU524mCzXYuiG4AyuTmEPojy6zwx7oLrvH1G1q357 yMlgNmbZvW3403fs3I5Bg2sQfZV/3QMc1PDs2Z4bTIs72lzwblRxBfjKQyAdzxKbwGK1 9nf8TtRQhRvHDgmJFc5gJSTZrx/IY29Rk9eLotmONSltTAXAQrJj3ZGnVWrL308nqAy/ MYcCcpJ1kkLvIVxhbBT5cThLsy2xDX6aUxIavXD1sqeiKCmLPQb5/BgFJTVqqWgkioYT ztZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736958502; x=1737563302; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Zjd4L+skRjDfREyt5/l20Z/nbYutI6PIQ0sn5+CJWLE=; b=WZjeCQprQKsHKsN+FAbiVIPnogULf0vSQmnu5+84f8U4oLJu8td7BbQpOUzxhuX2vA g1P6b70bdV3c36efNJIY/3e/l5NGaNATsuoZtHo1/OYFTDTQZHfnKeeKfhrEbDunB0vO iOqbx2yMzeyN+Eyvci7ECPR07LdZJ5gTQEM8doDWU8h7WhKK/JDpK3jjETHvn7eCITgL TaRZwZ77kOVjLtzxG+4oTvC2NODu1XMWEQHSuzGj69ohfQUwFd+wxmFmBO10qezVph3m bxo/NxGDw4kpwzLyLlYfSv38OsRbBiX+IbuviTRh7ZZLFTEOWWrztvAf5N5yjm0DgQFS Ia0w== X-Forwarded-Encrypted: i=1; AJvYcCUirGNZbKsduEKQFgaI2k8SucSAlyMXPE64ZZiQP5UirG0H5oX+iJIoDqxLbUYlkwclNCL/88UFiTl36gQ=@vger.kernel.org X-Gm-Message-State: AOJu0YwnxwjQRbhAPIESeRSEPqF8Mn54KHpk7nbpIJR8Hx63nT4J3/Ra nFOrxFo6DDKcFOwPRrsBIpxfYT46LJI0LAW9+bP4LpWxeX2GO7Z+3bD3cBHGEC2pfoJ6KpEO0Zc Y X-Gm-Gg: ASbGncuE6CE7cvJQyM1IFCk07LaNilBc/kn25LlebhQ0pupzDIMJrwmXwULaIDbRAWV rAyWXl0NfjrSnNm79oEO2/LC+cgbmOXlGok7LajhMHO6dtAIEeg3o5FQRFf/xglgf3cfgrO9Gqd m9YntMkEhw9kGX6CG/c4/rnITib+Em4P3iz0WYkJTAOwU/dv8AoinD1Qh4RlEfUnV0q5cuVlvui MLRiFgzKxuin1Q3hDxTz5IfTIB8+AmmxWlAf4QnK9wwohIo2vQ63XU= X-Google-Smtp-Source: AGHT+IFVNgnOJAPAG8manRzHjKDMqVJZ+LeOnlwimnKFOP7HxazUcQ5ElmsH3VOpcllswC4C2+OiCA== X-Received: by 2002:a05:600c:3485:b0:436:fbe0:cebe with SMTP id 5b1f17b1804b1-436fbe0d10cmr129899845e9.30.1736958502328; Wed, 15 Jan 2025 08:28:22 -0800 (PST) Received: from pop-os.. ([145.224.90.10]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-437c74ac61csm28620115e9.14.2025.01.15.08.28.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Jan 2025 08:28:22 -0800 (PST) From: James Clark To: linux-arm-kernel@lists.infradead.org, robh@kernel.org, broonie@kernel.org, maz@kernel.org Cc: James Clark , Catalin Marinas , Will Deacon , Mark Rutland , Oliver Upton , Anshuman Khandual , James Morse , linux-kernel@vger.kernel.org Subject: [PATCH v2 2/4] arm64/sysreg: Enforce whole word match for open/close tokens Date: Wed, 15 Jan 2025 16:25:56 +0000 Message-Id: <20250115162600.2153226-3-james.clark@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250115162600.2153226-1-james.clark@linaro.org> References: <20250115162600.2153226-1-james.clark@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Opening and closing tokens can also match on words with common prefixes like "Endsysreg" vs "EndsysregFields". This could potentially make the script go wrong in weird ways so make it fall through to the fatal unhandled statement catcher if it doesn't fully match the current block. Closing ones also get expect_fields(1) to ensure nothing other than whitespace follows. Signed-off-by: James Clark Acked-by: Mark Rutland Acked-by: Will Deacon --- arch/arm64/tools/gen-sysreg.awk | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/arch/arm64/tools/gen-sysreg.awk b/arch/arm64/tools/gen-sysreg.= awk index 1a2afc9fdd42..f2a1732cb1f6 100755 --- a/arch/arm64/tools/gen-sysreg.awk +++ b/arch/arm64/tools/gen-sysreg.awk @@ -111,7 +111,7 @@ END { /^$/ { next } /^[\t ]*#/ { next } =20 -/^SysregFields/ && block_current() =3D=3D "Root" { +$1 =3D=3D "SysregFields" && block_current() =3D=3D "Root" { block_push("SysregFields") =20 expect_fields(2) @@ -127,7 +127,8 @@ END { next } =20 -/^EndSysregFields/ && block_current() =3D=3D "SysregFields" { +$1 =3D=3D "EndSysregFields" && block_current() =3D=3D "SysregFields" { + expect_fields(1) if (next_bit > 0) fatal("Unspecified bits in " reg) =20 @@ -145,7 +146,7 @@ END { next } =20 -/^Sysreg/ && block_current() =3D=3D "Root" { +$1 =3D=3D "Sysreg" && block_current() =3D=3D "Root" { block_push("Sysreg") =20 expect_fields(7) @@ -177,7 +178,8 @@ END { next } =20 -/^EndSysreg/ && block_current() =3D=3D "Sysreg" { +$1 =3D=3D "EndSysreg" && block_current() =3D=3D "Sysreg" { + expect_fields(1) if (next_bit > 0) fatal("Unspecified bits in " reg) =20 @@ -206,7 +208,7 @@ END { =20 # Currently this is effectivey a comment, in future we may want to emit # defines for the fields. -(/^Fields/ || /^Mapping/) && block_current() =3D=3D "Sysreg" { +($1 =3D=3D "Fields" || $1 =3D=3D "Mapping") && block_current() =3D=3D "Sys= reg" { expect_fields(2) =20 if (next_bit !=3D 63) @@ -224,7 +226,7 @@ END { } =20 =20 -/^Res0/ && (block_current() =3D=3D "Sysreg" || block_current() =3D=3D "Sys= regFields") { +$1 =3D=3D "Res0" && (block_current() =3D=3D "Sysreg" || block_current() = =3D=3D "SysregFields") { expect_fields(2) parse_bitdef(reg, "RES0", $2) field =3D "RES0_" msb "_" lsb @@ -234,7 +236,7 @@ END { next } =20 -/^Res1/ && (block_current() =3D=3D "Sysreg" || block_current() =3D=3D "Sys= regFields") { +$1 =3D=3D "Res1" && (block_current() =3D=3D "Sysreg" || block_current() = =3D=3D "SysregFields") { expect_fields(2) parse_bitdef(reg, "RES1", $2) field =3D "RES1_" msb "_" lsb @@ -244,7 +246,7 @@ END { next } =20 -/^Unkn/ && (block_current() =3D=3D "Sysreg" || block_current() =3D=3D "Sys= regFields") { +$1 =3D=3D "Unkn" && (block_current() =3D=3D "Sysreg" || block_current() = =3D=3D "SysregFields") { expect_fields(2) parse_bitdef(reg, "UNKN", $2) field =3D "UNKN_" msb "_" lsb @@ -254,7 +256,7 @@ END { next } =20 -/^Field/ && (block_current() =3D=3D "Sysreg" || block_current() =3D=3D "Sy= sregFields") { +$1 =3D=3D "Field" && (block_current() =3D=3D "Sysreg" || block_current() = =3D=3D "SysregFields") { expect_fields(3) field =3D $3 parse_bitdef(reg, field, $2) @@ -265,14 +267,14 @@ END { next } =20 -/^Raz/ && (block_current() =3D=3D "Sysreg" || block_current() =3D=3D "Sysr= egFields") { +$1 =3D=3D "Raz" && (block_current() =3D=3D "Sysreg" || block_current() =3D= =3D "SysregFields") { expect_fields(2) parse_bitdef(reg, field, $2) =20 next } =20 -/^SignedEnum/ && (block_current() =3D=3D "Sysreg" || block_current() =3D= =3D "SysregFields") { +$1 =3D=3D "SignedEnum" && (block_current() =3D=3D "Sysreg" || block_curren= t() =3D=3D "SysregFields") { block_push("Enum") =20 expect_fields(3) @@ -285,7 +287,7 @@ END { next } =20 -/^UnsignedEnum/ && (block_current() =3D=3D "Sysreg" || block_current() =3D= =3D "SysregFields") { +$1 =3D=3D "UnsignedEnum" && (block_current() =3D=3D "Sysreg" || block_curr= ent() =3D=3D "SysregFields") { block_push("Enum") =20 expect_fields(3) @@ -298,7 +300,7 @@ END { next } =20 -/^Enum/ && (block_current() =3D=3D "Sysreg" || block_current() =3D=3D "Sys= regFields") { +$1 =3D=3D "Enum" && (block_current() =3D=3D "Sysreg" || block_current() = =3D=3D "SysregFields") { block_push("Enum") =20 expect_fields(3) @@ -310,7 +312,8 @@ END { next } =20 -/^EndEnum/ && block_current() =3D=3D "Enum" { +$1 =3D=3D "EndEnum" && block_current() =3D=3D "Enum" { + expect_fields(1) =20 field =3D null msb =3D null --=20 2.34.1