]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
arm64/sysreg: Allow a 'Mapping' descriptor for system registers
authorMarc Zyngier <maz@kernel.org>
Thu, 19 Dec 2024 17:33:47 +0000 (17:33 +0000)
committerWill Deacon <will@kernel.org>
Thu, 19 Dec 2024 18:00:58 +0000 (18:00 +0000)
*EL02 and *_EL12 system registers are actually only accessors for
EL0 and EL1 registers accessed from EL2 when HCR_EL2.E2H==1. They
do not have fields of their own.

To that effect, introduce a 'Mapping' entry, describing which
system register an _EL12 register maps to.

Implementation wise, this is handled the same was as Fields,
which ls only a comment.

Acked-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20241219173351.1123087-2-maz@kernel.org
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/tools/gen-sysreg.awk
arch/arm64/tools/sysreg

index d1254a056114e1565d7087abd81b5087e58bee81..1a2afc9fdd42e8d450c97890a9040e9cc61b33a8 100755 (executable)
@@ -206,7 +206,7 @@ END {
 
 # Currently this is effectivey a comment, in future we may want to emit
 # defines for the fields.
-/^Fields/ && block_current() == "Sysreg" {
+(/^Fields/ || /^Mapping/) && block_current() == "Sysreg" {
        expect_fields(2)
 
        if (next_bit != 63)
index b081b54d6d227ed8300a6f129896647316f0b673..da3f02cdf1052ab9301a8bbdc0d6bcc9b4386b79 100644 (file)
 #      ...
 # EndEnum
 
-# Alternatively if multiple registers share the same layout then
-# a SysregFields block can be used to describe the shared layout
+# For VHE aliases (*_EL12, *_EL02) of system registers, a Mapping
+# entry describes the register the alias actually accesses:
+
+# Sysreg       <name_EL12>     <op0>   <op1>   <crn>   <crm>   <op2>
+# Mapping      <name_EL1>
+# EndSysreg
+
+# Where multiple system regsiters are not VHE aliases but share a
+# common layout, a SysregFields block can be used to describe the
+# shared layout:
 
 # SysregFields <fieldsname>
 # <field>