Commit 078bc965 authored by Marc Zyngier's avatar Marc Zyngier Committed by Will Deacon
Browse files

arm64/sysreg: Allow a 'Mapping' descriptor for system registers



*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: default avatarMark Rutland <mark.rutland@arm.com>
Reviewed-by: default avatarMark Brown <broonie@kernel.org>
Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20241219173351.1123087-2-maz@kernel.org


Signed-off-by: default avatarWill Deacon <will@kernel.org>
parent e52163df
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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)
+10 −2
Original line number Diff line number Diff line
@@ -24,8 +24,16 @@
#	...
# 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>