[PATCH v1 12/12] arm64/sve: Generate ZCR definitions

Mark Rutland mark.rutland at arm.com
Fri May 13 07:46:00 PDT 2022


On Tue, May 10, 2022 at 05:12:08PM +0100, Mark Brown wrote:
> Convert the various ZCR instances to automatic generation, no functional
> changes expected.
> 
> Signed-off-by: Mark Brown <broonie at kernel.org>
> ---
>  arch/arm64/include/asm/sysreg.h |  7 -------
>  arch/arm64/tools/sysreg         | 18 ++++++++++++++++++
>  2 files changed, 18 insertions(+), 7 deletions(-)
> 
> diff --git a/arch/arm64/include/asm/sysreg.h b/arch/arm64/include/asm/sysreg.h
> index 804b5326c393..91e4f8601393 100644
> --- a/arch/arm64/include/asm/sysreg.h
> +++ b/arch/arm64/include/asm/sysreg.h
> @@ -213,7 +213,6 @@
>  #define SYS_RGSR_EL1			sys_reg(3, 0, 1, 0, 5)
>  #define SYS_GCR_EL1			sys_reg(3, 0, 1, 0, 6)
>  
> -#define SYS_ZCR_EL1			sys_reg(3, 0, 1, 2, 0)
>  #define SYS_TRFCR_EL1			sys_reg(3, 0, 1, 2, 1)
>  
>  #define SYS_TCR_EL1			sys_reg(3, 0, 2, 0, 2)
> @@ -558,7 +557,6 @@
>  #define SYS_HFGRTR_EL2			sys_reg(3, 4, 1, 1, 4)
>  #define SYS_HFGWTR_EL2			sys_reg(3, 4, 1, 1, 5)
>  #define SYS_HFGITR_EL2			sys_reg(3, 4, 1, 1, 6)
> -#define SYS_ZCR_EL2			sys_reg(3, 4, 1, 2, 0)
>  #define SYS_TRFCR_EL2			sys_reg(3, 4, 1, 2, 1)
>  #define SYS_HCRX_EL2			sys_reg(3, 4, 1, 2, 2)
>  #define SYS_DACR32_EL2			sys_reg(3, 4, 3, 0, 0)
> @@ -619,7 +617,6 @@
>  /* VHE encodings for architectural EL0/1 system registers */
>  #define SYS_SCTLR_EL12			sys_reg(3, 5, 1, 0, 0)
>  #define SYS_CPACR_EL12			sys_reg(3, 5, 1, 0, 2)
> -#define SYS_ZCR_EL12			sys_reg(3, 5, 1, 2, 0)
>  #define SYS_TTBR0_EL12			sys_reg(3, 5, 2, 0, 0)
>  #define SYS_TTBR1_EL12			sys_reg(3, 5, 2, 0, 1)
>  #define SYS_TCR_EL12			sys_reg(3, 5, 2, 0, 2)
> @@ -1101,10 +1098,6 @@
>  #define DCZID_DZP_SHIFT			4
>  #define DCZID_BS_SHIFT			0
>  
> -#define ZCR_ELx_LEN_SHIFT	0
> -#define ZCR_ELx_LEN_WIDTH	4
> -#define ZCR_ELx_LEN_MASK	0xf
> -
>  #define CPACR_EL1_FPEN_EL1EN	(BIT(20)) /* enable EL1 access */
>  #define CPACR_EL1_FPEN_EL0EN	(BIT(21)) /* enable EL0 access, if EL1EN set */
>  
> diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
> index 7888603db50a..a236d7a821b4 100644
> --- a/arch/arm64/tools/sysreg
> +++ b/arch/arm64/tools/sysreg
> @@ -190,6 +190,16 @@ Res0	63:4
>  Field	3:0	PRIORITY
>  EndSysreg
>  
> +SysregFields	ZCR_ELx
> +Res0	63:9
> +Raz	8:4
> +Field	3:0	LEN
> +EndSysregFields
> +
> +Sysreg ZCR_EL1	3	0	1	2	0
> +Fields ZCR_ELx
> +EndSysreg
> +
>  SysregFields	SMCR_ELx
>  Res0	63:32
>  Field	31	FA64
> @@ -217,6 +227,10 @@ Field	1	ZA
>  Field	0	SM
>  EndSysreg
>  
> +Sysreg	ZCR_EL2	3	4	1	2	0
> +Fields	ZCR_ELx
> +EndSysreg
> +
>  Sysreg	SMPRIMAP_EL2	3	4	1	2	5
>  Field	63:60	P15
>  Field	59:56	P14
> @@ -240,6 +254,10 @@ Sysreg	SMCR_EL2	3	4	1	2	6
>  Fields	SMCR_ELx
>  EndSysreg
>  
> +Sysreg	ZCR_EL12	3	5	1	2	0
> +Fields	ZCR_ELx
> +EndSysreg
> +
>  Sysreg	SMCR_EL12	3	5	1	2	6
>  Fields	SMCR_ELx
>  EndSysreg

These all look right to me per ARM DDI 0487H.a:

* ZCR_EL1:  pages D13-6071 to D13-6072
* ZCR_EL12: pages D13-6073 to D13-6074
* ZCR_EL2:  pages D13-6076 to D13-6077

Reviewed-by: Mark Rutland <mark.rutland at arm.com>

As on another patch, I'm fine either way with capturing RAZ/WI as RAZ.

Mark.



More information about the linux-arm-kernel mailing list