[PATCH 1/4] arm64: sysreg: generate TPIDR, SP and DAIF encodings
Vladimir Murzin
vladimir.murzin at arm.com
Tue Oct 20 02:16:26 PDT 2026
On 10/16/26 17:46, Ada Couprie Diaz wrote:
> Introduce missing SYS_DAIF and SYS_SP_EL0 encodings in preparation
> for a future commit.
> While we are here, replace SYS_SP_EL{1,2} manual encodings with
> automatically generated ones.
>
> As the future commit will make use of SYS_TPIDR_EL{1,2} encodings,
> replace their and related registers manual encodings with
> automatically generated ones as well.
>
> Clean up manual `SYS_CONTEXTIDR_EL2` definition, as it was already
> generated.
>
> Signed-off-by: Ada Couprie Diaz <ada.coupriediaz at arm.com>
> ---
> arch/arm64/include/asm/sysreg.h | 8 -------
> arch/arm64/tools/sysreg | 37 +++++++++++++++++++++++++++++++++
> 2 files changed, 37 insertions(+), 8 deletions(-)
>
> diff --git a/arch/arm64/include/asm/sysreg.h b/arch/arm64/include/asm/sysreg.h
> index 7aa08d59d4944..7948b8c74cf49 100644
> --- a/arch/arm64/include/asm/sysreg.h
> +++ b/arch/arm64/include/asm/sysreg.h
> @@ -418,10 +418,6 @@
> #define SYS_PMUSERENR_EL0 sys_reg(3, 3, 9, 14, 0)
> #define SYS_PMOVSSET_EL0 sys_reg(3, 3, 9, 14, 3)
>
> -#define SYS_TPIDR_EL0 sys_reg(3, 3, 13, 0, 2)
> -#define SYS_TPIDRRO_EL0 sys_reg(3, 3, 13, 0, 3)
> -#define SYS_TPIDR2_EL0 sys_reg(3, 3, 13, 0, 5)
> -
> #define SYS_SCXTNUM_EL0 sys_reg(3, 3, 13, 0, 7)
>
> /* Definitions for system register interface to AMU for ARMv8.4 onwards */
> @@ -520,7 +516,6 @@
> #define SYS_HAFGRTR_EL2 sys_reg(3, 4, 3, 1, 6)
> #define SYS_SPSR_EL2 sys_reg(3, 4, 4, 0, 0)
> #define SYS_ELR_EL2 sys_reg(3, 4, 4, 0, 1)
> -#define SYS_SP_EL1 sys_reg(3, 4, 4, 1, 0)
> #define SYS_SPSR_irq sys_reg(3, 4, 4, 3, 0)
> #define SYS_SPSR_abt sys_reg(3, 4, 4, 3, 1)
> #define SYS_SPSR_und sys_reg(3, 4, 4, 3, 2)
> @@ -580,8 +575,6 @@
> #define SYS_ICH_LR14_EL2 __SYS__LR8_EL2(6)
> #define SYS_ICH_LR15_EL2 __SYS__LR8_EL2(7)
>
> -#define SYS_CONTEXTIDR_EL2 sys_reg(3, 4, 13, 0, 1)
> -#define SYS_TPIDR_EL2 sys_reg(3, 4, 13, 0, 2)
> #define SYS_SCXTNUM_EL2 sys_reg(3, 4, 13, 0, 7)
>
> #define __AMEV_op2(m) (m & 0x7)
> @@ -623,7 +616,6 @@
> #define SYS_CNTV_CTL_EL02 sys_reg(3, 5, 14, 3, 1)
> #define SYS_CNTV_CVAL_EL02 sys_reg(3, 5, 14, 3, 2)
>
> -#define SYS_SP_EL2 sys_reg(3, 6, 4, 1, 0)
>
> /* AT instructions */
> #define AT_Op0 1
> diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
> index e2d37ee221b84..7349744f14211 100644
> --- a/arch/arm64/tools/sysreg
> +++ b/arch/arm64/tools/sysreg
> @@ -2958,6 +2958,10 @@ Res0 4:1
> Field 0 PCRSEL
> EndSysreg
>
> +Sysreg SP_EL0 3 0 4 1 0
> +Field 63:0 SP
> +EndSysreg
> +
> Sysreg ALLINT 3 0 4 3 0
> Res0 63:14
> Field 13 ALLINT
> @@ -3811,6 +3815,15 @@ Sysreg GCSPR_EL0 3 3 2 5 1
> Fields GCSPR_ELx
> EndSysreg
>
> +Sysreg DAIF 3 3 4 2 1
> +Res0 63:10
> +Field 9 D
> +Field 8 A
> +Field 7 I
> +Field 6 F
> +Res0 5:0
> +EndSysreg
> +
> Sysreg SVCR 3 3 4 2 2
> Res0 63:2
> Field 1 ZA
> @@ -3885,6 +3898,22 @@ UnsignedEnum 2:0 F8S1
> EndEnum
> EndSysreg
>
> +Sysreg TPIDR_EL0 3 3 13 0 2
> +Field 63:0 ThreadID
> +EndSysreg
> +
> +Sysreg TPIDRRO_EL0 3 3 13 0 3
> +Field 63:0 ThreadID
> +EndSysreg
> +
> +Sysreg TPIDR2_EL0 3 3 13 0 5
> +Field 63:0 ThreadID
> +EndSysreg
> +
> +Sysreg SP_EL1 3 4 4 1 0
> +Field 63:0 SP
> +EndSysreg
> +
> Sysreg SCTLR_EL2 3 4 1 0 0
> Field 63 TIDCP
> Field 62 SPINTMASK
> @@ -5425,6 +5454,10 @@ Sysreg CONTEXTIDR_EL2 3 4 13 0 1
> Fields CONTEXTIDR_ELx
> EndSysreg
>
> +Sysreg TPIDR_EL2 3 4 13 0 2
> +Field 63:0 ThreadID
> +EndSysreg
> +
> Sysreg CNTPOFF_EL2 3 4 14 0 6
> Field 63:0 PhysicalOffset
> EndSysreg
> @@ -5465,6 +5498,10 @@ Sysreg CONTEXTIDR_EL12 3 5 13 0 1
> Mapping CONTEXTIDR_EL1
> EndSysreg
>
> +Sysreg SP_EL2 3 6 4 1 0
> +Field 63:0 SP
> +EndSysreg
> +
> SysregFields TTBRx_EL1
> Field 63:48 ASID
> Field 47:1 BADDR
> -- 2.43.0
>
I've cheeked replaced and removed encodings against generated sysreg-defs.h
and all look correct. New encodings matches ARM ARM.
FWIW,
Reviewed-by: Vladimir Murzin <vladimir.murzin at arm.com>
More information about the linux-arm-kernel
mailing list