Commit 95693604 authored by Rob Herring's avatar Rob Herring Committed by Will Deacon

arm64/sysreg: Convert SPE registers to automatic generation

Convert all the SPE register defines to automatic generation. No
functional changes.

New registers and fields for SPEv1.2 are added with the conversion.

Some of the PMBSR MSS field defines are kept as the automatic generation
has no way to create multiple names for the same register bits. The
meaning of the MSS field depends on other bits.
Tested-by: default avatarJames Clark <james.clark@arm.com>
Signed-off-by: default avatarRob Herring <robh@kernel.org>
Reviewed-by: default avatarMark Brown <broonie@kernel.org>
Reviewed-by: default avatarAnshuman Khandual <anshuman.khandual@arm.com>
Link: https://lore.kernel.org/r/20220825-arm-spe-v8-7-v4-3-327f860daf28@kernel.orgSigned-off-by: default avatarWill Deacon <will@kernel.org>
parent c759ec85
......@@ -216,99 +216,18 @@
#define SYS_PAR_EL1_FST GENMASK(6, 1)
/*** Statistical Profiling Extension ***/
/* ID registers */
#define SYS_PMSIDR_EL1 sys_reg(3, 0, 9, 9, 7)
#define PMSIDR_EL1_FE_SHIFT 0
#define PMSIDR_EL1_FT_SHIFT 1
#define PMSIDR_EL1_FL_SHIFT 2
#define PMSIDR_EL1_ARCHINST_SHIFT 3
#define PMSIDR_EL1_LDS_SHIFT 4
#define PMSIDR_EL1_ERND_SHIFT 5
#define PMSIDR_EL1_INTERVAL_SHIFT 8
#define PMSIDR_EL1_INTERVAL_MASK GENMASK_ULL(11, 8)
#define PMSIDR_EL1_MAXSIZE_SHIFT 12
#define PMSIDR_EL1_MAXSIZE_MASK GENMASK_ULL(15, 12)
#define PMSIDR_EL1_COUNTSIZE_SHIFT 16
#define PMSIDR_EL1_COUNTSIZE_MASK GENMASK_ULL(19, 16)
#define SYS_PMBIDR_EL1 sys_reg(3, 0, 9, 10, 7)
#define PMBIDR_EL1_ALIGN_SHIFT 0
#define PMBIDR_EL1_ALIGN_MASK 0xfU
#define PMBIDR_EL1_P_SHIFT 4
#define PMBIDR_EL1_F_SHIFT 5
/* Sampling controls */
#define SYS_PMSCR_EL1 sys_reg(3, 0, 9, 9, 0)
#define PMSCR_EL1_E0SPE_SHIFT 0
#define PMSCR_EL1_E1SPE_SHIFT 1
#define PMSCR_EL1_CX_SHIFT 3
#define PMSCR_EL1_PA_SHIFT 4
#define PMSCR_EL1_TS_SHIFT 5
#define PMSCR_EL1_PCT_SHIFT 6
#define SYS_PMSCR_EL2 sys_reg(3, 4, 9, 9, 0)
#define PMSCR_EL2_E0HSPE_SHIFT 0
#define PMSCR_EL2_E2SPE_SHIFT 1
#define PMSCR_EL2_CX_SHIFT 3
#define PMSCR_EL2_PA_SHIFT 4
#define PMSCR_EL2_TS_SHIFT 5
#define PMSCR_EL2_PCT_SHIFT 6
#define SYS_PMSICR_EL1 sys_reg(3, 0, 9, 9, 2)
#define SYS_PMSIRR_EL1 sys_reg(3, 0, 9, 9, 3)
#define PMSIRR_EL1_RND_SHIFT 0
#define PMSIRR_EL1_INTERVAL_SHIFT 8
#define PMSIRR_EL1_INTERVAL_MASK GENMASK_ULL(31, 8)
/* Filtering controls */
#define SYS_PMSNEVFR_EL1 sys_reg(3, 0, 9, 9, 1)
#define SYS_PMSFCR_EL1 sys_reg(3, 0, 9, 9, 4)
#define PMSFCR_EL1_FE_SHIFT 0
#define PMSFCR_EL1_FT_SHIFT 1
#define PMSFCR_EL1_FL_SHIFT 2
#define PMSFCR_EL1_B_SHIFT 16
#define PMSFCR_EL1_LD_SHIFT 17
#define PMSFCR_EL1_ST_SHIFT 18
#define SYS_PMSEVFR_EL1 sys_reg(3, 0, 9, 9, 5)
#define PMSEVFR_EL1_RES0_IMP \
(GENMASK_ULL(47, 32) | GENMASK_ULL(23, 16) | GENMASK_ULL(11, 8) |\
BIT_ULL(6) | BIT_ULL(4) | BIT_ULL(2) | BIT_ULL(0))
#define PMSEVFR_EL1_RES0_V1P1 \
(PMSEVFR_EL1_RES0_IMP & ~(BIT_ULL(18) | BIT_ULL(17) | BIT_ULL(11)))
#define SYS_PMSLATFR_EL1 sys_reg(3, 0, 9, 9, 6)
#define PMSLATFR_EL1_MINLAT_SHIFT 0
/* Buffer controls */
#define SYS_PMBLIMITR_EL1 sys_reg(3, 0, 9, 10, 0)
#define PMBLIMITR_EL1_E_SHIFT 0
#define PMBLIMITR_EL1_FM_SHIFT 1
#define PMBLIMITR_EL1_FM_MASK GENMASK_ULL(2, 1)
#define PMBLIMITR_EL1_FM_STOP_IRQ 0
#define SYS_PMBPTR_EL1 sys_reg(3, 0, 9, 10, 1)
/* Buffer error reporting */
#define SYS_PMBSR_EL1 sys_reg(3, 0, 9, 10, 3)
#define PMBSR_EL1_COLL_SHIFT 16
#define PMBSR_EL1_S_SHIFT 17
#define PMBSR_EL1_EA_SHIFT 18
#define PMBSR_EL1_DL_SHIFT 19
#define PMBSR_EL1_EC_SHIFT 26
#define PMBSR_EL1_EC_MASK GENMASK_ULL(31, 26)
#define PMBSR_EL1_EC_BUF 0x0UL
#define PMBSR_EL1_EC_FAULT_S1 0x24UL
#define PMBSR_EL1_EC_FAULT_S2 0x25UL
#define PMBSR_EL1_FAULT_FSC_SHIFT 0
#define PMBSR_EL1_FAULT_FSC_MASK 0x3fUL
#define PMBSR_EL1_BUF_BSC_SHIFT 0
#define PMBSR_EL1_BUF_BSC_MASK 0x3fUL
#define PMBSR_EL1_FAULT_FSC_SHIFT PMBSR_EL1_MSS_SHIFT
#define PMBSR_EL1_FAULT_FSC_MASK PMBSR_EL1_MSS_MASK
#define PMBSR_EL1_BUF_BSC_SHIFT PMBSR_EL1_MSS_SHIFT
#define PMBSR_EL1_BUF_BSC_MASK PMBSR_EL1_MSS_MASK
#define PMBSR_EL1_BUF_BSC_FULL 0x1UL
......
......@@ -1618,6 +1618,130 @@ Sysreg FAR_EL1 3 0 6 0 0
Field 63:0 ADDR
EndSysreg
Sysreg PMSCR_EL1 3 0 9 9 0
Res0 63:8
Field 7:6 PCT
Field 5 TS
Field 4 PA
Field 3 CX
Res0 2
Field 1 E1SPE
Field 0 E0SPE
EndSysreg
Sysreg PMSNEVFR_EL1 3 0 9 9 1
Field 63:0 E
EndSysreg
Sysreg PMSICR_EL1 3 0 9 9 2
Field 63:56 ECOUNT
Res0 55:32
Field 31:0 COUNT
EndSysreg
Sysreg PMSIRR_EL1 3 0 9 9 3
Res0 63:32
Field 31:8 INTERVAL
Res0 7:1
Field 0 RND
EndSysreg
Sysreg PMSFCR_EL1 3 0 9 9 4
Res0 63:19
Field 18 ST
Field 17 LD
Field 16 B
Res0 15:4
Field 3 FnE
Field 2 FL
Field 1 FT
Field 0 FE
EndSysreg
Sysreg PMSEVFR_EL1 3 0 9 9 5
Field 63:0 E
EndSysreg
Sysreg PMSLATFR_EL1 3 0 9 9 6
Res0 63:16
Field 15:0 MINLAT
EndSysreg
Sysreg PMSIDR_EL1 3 0 9 9 7
Res0 63:25
Field 24 PBT
Field 23:20 FORMAT
Enum 19:16 COUNTSIZE
0b0010 12_BIT_SAT
0b0011 16_BIT_SAT
EndEnum
Field 15:12 MAXSIZE
Enum 11:8 INTERVAL
0b0000 256
0b0010 512
0b0011 768
0b0100 1024
0b0101 1536
0b0110 2048
0b0111 3072
0b1000 4096
EndEnum
Res0 7
Field 6 FnE
Field 5 ERND
Field 4 LDS
Field 3 ARCHINST
Field 2 FL
Field 1 FT
Field 0 FE
EndSysreg
Sysreg PMBLIMITR_EL1 3 0 9 10 0
Field 63:12 LIMIT
Res0 11:6
Field 5 PMFZ
Res0 4:3
Enum 2:1 FM
0b00 FILL
0b10 DISCARD
EndEnum
Field 0 E
EndSysreg
Sysreg PMBPTR_EL1 3 0 9 10 1
Field 63:0 PTR
EndSysreg
Sysreg PMBSR_EL1 3 0 9 10 3
Res0 63:32
Enum 31:26 EC
0b000000 BUF
0b100100 FAULT_S1
0b100101 FAULT_S2
0b011110 FAULT_GPC
0b011111 IMP_DEF
EndEnum
Res0 25:20
Field 19 DL
Field 18 EA
Field 17 S
Field 16 COLL
Field 15:0 MSS
EndSysreg
Sysreg PMBIDR_EL1 3 0 9 10 7
Res0 63:12
Enum 11:8 EA
0b0000 NotDescribed
0b0001 Ignored
0b0010 SError
EndEnum
Res0 7:6
Field 5 F
Field 4 P
Field 3:0 ALIGN
EndSysreg
SysregFields CONTEXTIDR_ELx
Res0 63:32
Field 31:0 PROCID
......@@ -1772,6 +1896,21 @@ Sysreg FAR_EL2 3 4 6 0 0
Field 63:0 ADDR
EndSysreg
Sysreg PMSCR_EL2 3 4 9 9 0
Res0 63:8
Enum 7:6 PCT
0b00 VIRT
0b01 PHYS
0b11 GUEST
EndEnum
Field 5 TS
Field 4 PA
Field 3 CX
Res0 2
Field 1 E2SPE
Field 0 E0HSPE
EndSysreg
Sysreg CONTEXTIDR_EL2 3 4 13 0 1
Fields CONTEXTIDR_ELx
EndSysreg
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment