[PATCH v2 17/17] arm64/sysreg: Convert ID_AA64ISAR2_EL1 to automatic generation

Joey Gouly joey.gouly at arm.com
Wed Jun 8 07:55:29 PDT 2022


Hi Mark,

On Wed, Jun 08, 2022 at 02:31:51PM +0100, Mark Brown wrote:
> Automatically generate defines for ID_AA64ISAR2_EL1, using the definitions
> in DDI0487H.a. No functional changes.
> 
> Signed-off-by: Mark Brown <broonie at kernel.org>
> ---
>  arch/arm64/include/asm/sysreg.h | 27 ---------------------------
>  arch/arm64/tools/sysreg         | 33 +++++++++++++++++++++++++++++++++
>  2 files changed, 33 insertions(+), 27 deletions(-)
> 
> diff --git a/arch/arm64/include/asm/sysreg.h b/arch/arm64/include/asm/sysreg.h
> index 6a732dba73ac..767f5392ba3d 100644
> --- a/arch/arm64/include/asm/sysreg.h
> +++ b/arch/arm64/include/asm/sysreg.h
> @@ -201,8 +201,6 @@
>  #define SYS_ID_AA64AFR0_EL1		sys_reg(3, 0, 0, 5, 4)
>  #define SYS_ID_AA64AFR1_EL1		sys_reg(3, 0, 0, 5, 5)
>  
> -#define SYS_ID_AA64ISAR2_EL1		sys_reg(3, 0, 0, 6, 2)
> -
>  #define SYS_ID_AA64MMFR0_EL1		sys_reg(3, 0, 0, 7, 0)
>  #define SYS_ID_AA64MMFR1_EL1		sys_reg(3, 0, 0, 7, 1)
>  #define SYS_ID_AA64MMFR2_EL1		sys_reg(3, 0, 0, 7, 2)
> @@ -699,31 +697,6 @@
>  /* Position the attr at the correct index */
>  #define MAIR_ATTRIDX(attr, idx)		((attr) << ((idx) * 8))
>  
> -/* id_aa64isar2 */
> -#define ID_AA64ISAR2_EL1_BC_SHIFT		28
> -#define ID_AA64ISAR2_EL1_APA3_SHIFT		12
> -#define ID_AA64ISAR2_EL1_GPA3_SHIFT		8
> -#define ID_AA64ISAR2_EL1_RPRES_SHIFT	4
> -#define ID_AA64ISAR2_EL1_WFxT_SHIFT		0
> -
> -/*
> - * Value 0x1 has been removed from the architecture, and is
> - * reserved, but has not yet been removed from the ARM ARM
> - * as of ARM DDI 0487G.b.
> - */
> -#define ID_AA64ISAR2_EL1_WFxT_NI		0x0
> -#define ID_AA64ISAR2_EL1_WFxT_IMP		0x2
> -
> -#define ID_AA64ISAR2_EL1_APA3_NI			0x0
> -#define ID_AA64ISAR2_EL1_APA3_PAuth			0x1
> -#define ID_AA64ISAR2_EL1_APA3_EPAC			0x2
> -#define ID_AA64ISAR2_EL1_APA3_PAuth2			0x3
> -#define ID_AA64ISAR2_EL1_APA3_FPAC			0x4
> -#define ID_AA64ISAR2_EL1_APA3_FPACCOMBINE		0x5
> -
> -#define ID_AA64ISAR2_EL1_GPA3_NI			0x0
> -#define ID_AA64ISAR2_EL1_GPA3_IMP			0x1
> -
>  /* id_aa64pfr0 */
>  #define ID_AA64PFR0_CSV3_SHIFT		60
>  #define ID_AA64PFR0_CSV2_SHIFT		56
> diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
> index 29d081b3dcd2..0c949857e371 100644
> --- a/arch/arm64/tools/sysreg
> +++ b/arch/arm64/tools/sysreg
> @@ -193,6 +193,39 @@ Enum	3:0	DPB
>  	0b0010	DPB2
>  EndEnum
>  EndSysreg
> +
> +Sysreg	ID_AA64ISAR2_EL1	3	0	0	6	2
> +Res0	63:28
> +Enum	27:24	PAC_frac
> +	0b0000	NI
> +	0b0001	IMP
> +EndEnum
> +Enum	23:20	BC
> +	0b0000	NI
> +	0b0001	IMP
> +EndEnum
> +Enum	19:16	MOPS
> +	0b0000	NI
> +	0b0001	IMP
> +EndEnum
> +Enum	15:12	APA3
> +	0b0000	NI
> +	0b0001	PAuth
> +	0b0010	EPAC
> +	0b0011	PAuth2
> +	0b0100	FPAC
> +	0b0101	FPACCOMBINE
> +EndEnum
> +Enum	11:8	GPA3
> +	0b0000	NI
> +	0b0001	IMP
> +EndEnum
> +Enum	7:4	RPRES
> +	0b0000	NI
> +	0b0001	IMP
> +EndEnum
> +Enum	3:0	WFxT
> +	0b0000	NI
>  	0b0001	IMP


This should be 0b0010. It was 0b0001 in older versions of the spec.

>From DDI 0487H.a, D13-5676:

	0b0000 WFET and WFIT are not supported.
	0b0010 WFET and WFIT are supported, and the register number is reported in the ESR_ELx on exceptions.
	All other values are reserved.

Thanks,
Joey



More information about the linux-arm-kernel mailing list