]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
arm64/sysreg: Fix checks for incomplete sysreg definitions
authorSascha Bischoff <Sascha.Bischoff@arm.com>
Wed, 22 Oct 2025 13:45:36 +0000 (13:45 +0000)
committerCatalin Marinas <catalin.marinas@arm.com>
Thu, 13 Nov 2025 18:09:46 +0000 (18:09 +0000)
The checks for incomplete sysreg definitions were checking if the
next_bit was greater than 0, which is incorrect and missed occasions
where bit 0 hasn't been defined for a sysreg. The reason is that
next_bit is -1 when all bits have been processed (LSB - 1).

Change the checks to use >= 0, instead. Also, set next_bit in Mapping
to -1 instead of 0 to match these new checks.

There are no changes to the generated sysreg definitons as part of
this change, and conveniently no definitions lack definitions for bit
0.

Signed-off-by: Sascha Bischoff <sascha.bischoff@arm.com>
Reviewed-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/tools/gen-sysreg.awk

index bbbb812603e8f04b9c9bc30aa6c1aab578eb76c6..172d04bb6cc3e37a0c74c16e117018c1952ca759 100755 (executable)
@@ -133,7 +133,7 @@ $1 == "SysregFields" && block_current() == "Root" {
 
 $1 == "EndSysregFields" && block_current() == "SysregFields" {
        expect_fields(1)
-       if (next_bit > 0)
+       if (next_bit >= 0)
                fatal("Unspecified bits in " reg)
 
        define(reg "_RES0", "(" res0 ")")
@@ -188,7 +188,7 @@ $1 == "Sysreg" && block_current() == "Root" {
 
 $1 == "EndSysreg" && block_current() == "Sysreg" {
        expect_fields(1)
-       if (next_bit > 0)
+       if (next_bit >= 0)
                fatal("Unspecified bits in " reg)
 
        if (res0 != null)
@@ -225,7 +225,7 @@ $1 == "EndSysreg" && block_current() == "Sysreg" {
        print "/* For " reg " fields see " $2 " */"
        print ""
 
-        next_bit = 0
+       next_bit = -1
        res0 = null
        res1 = null
        unkn = null