[PATCH v4 5/8] arm64/sysreg: Enable automatic generation of system register definitions
Mark Rutland
mark.rutland at arm.com
Thu Apr 21 02:52:47 PDT 2022
On Tue, Apr 19, 2022 at 11:43:26AM +0100, Mark Brown wrote:
> Now that we have a script for generating system registers hook it up to the
> build system similarly to cpucaps. Since we don't currently have any actual
> register information in the input file this should produce no change in the
> built kernel. For ease of review the register information will be converted
> in separate patches.
>
> Signed-off-by: Mark Brown <broonie at kernel.org>
> ---
> arch/arm64/include/asm/Kbuild | 1 +
> arch/arm64/include/asm/sysreg.h | 8 ++++++++
> arch/arm64/tools/Makefile | 8 +++++++-
> 3 files changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm64/include/asm/Kbuild b/arch/arm64/include/asm/Kbuild
> index 345fe98605ba..1eac9aa6fa2e 100644
> --- a/arch/arm64/include/asm/Kbuild
> +++ b/arch/arm64/include/asm/Kbuild
> @@ -7,3 +7,4 @@ generic-y += parport.h
> generic-y += user.h
>
> generated-y += cpucaps.h
> +generated-y += sysreg-gen.h
> diff --git a/arch/arm64/include/asm/sysreg.h b/arch/arm64/include/asm/sysreg.h
> index f300c49d6281..11bf3636c741 100644
> --- a/arch/arm64/include/asm/sysreg.h
> +++ b/arch/arm64/include/asm/sysreg.h
> @@ -114,6 +114,14 @@
> #define SYS_DC_CSW sys_insn(1, 0, 7, 10, 2)
> #define SYS_DC_CISW sys_insn(1, 0, 7, 14, 2)
>
> +/*
> + * Automatically generated definitions for system registers, the
> + * manual encodings below are in the process of being converted to
> + * come from here. The header relies on the definition of sys_reg()
> + * earlier in this file.
> + */
> +#include "asm/sysreg-gen.h"
Super trivial, but could we name that something like sysreg-defs.h? The fact
it's generated is implciit in it being placed under include/generated/asm/.
Otherwise, this looks good to me; my only vague concern is that as we add more
sysregs generating the header might take a while (which was a problem for the
atomic scripting, but not for the cpucap generation), so that's somethign to
keep an eye on as we convert more definitions over.
Regardless:
Acked-by: Mark Rutland <mark.rutland at arm.com>
Thanks,
Mark.
> +
> /*
> * System registers, organised loosely by encoding but grouped together
> * where the architected name contains an index. e.g. ID_MMFR<n>_EL1.
> diff --git a/arch/arm64/tools/Makefile b/arch/arm64/tools/Makefile
> index cf1307188150..8d2d38858a0d 100644
> --- a/arch/arm64/tools/Makefile
> +++ b/arch/arm64/tools/Makefile
> @@ -3,7 +3,7 @@
> gen := arch/$(ARCH)/include/generated
> kapi := $(gen)/asm
>
> -kapi-hdrs-y := $(kapi)/cpucaps.h
> +kapi-hdrs-y := $(kapi)/cpucaps.h $(kapi)/sysreg-gen.h
>
> targets += $(addprefix ../../../, $(kapi-hdrs-y))
>
> @@ -14,5 +14,11 @@ kapi: $(kapi-hdrs-y)
> quiet_cmd_gen_cpucaps = GEN $@
> cmd_gen_cpucaps = mkdir -p $(dir $@); $(AWK) -f $(real-prereqs) > $@
>
> +quiet_cmd_gen_sysreg = GEN $@
> + cmd_gen_sysreg = mkdir -p $(dir $@); $(AWK) -f $(real-prereqs) > $@
> +
> $(kapi)/cpucaps.h: $(src)/gen-cpucaps.awk $(src)/cpucaps FORCE
> $(call if_changed,gen_cpucaps)
> +
> +$(kapi)/sysreg-gen.h: $(src)/gen-sysreg.awk $(src)/sysreg FORCE
> + $(call if_changed,gen_sysreg)
> --
> 2.30.2
>
More information about the linux-arm-kernel
mailing list