arm64: make SPE regs use ALT_NAME macro

When the register is not defined in Armv8.0 i.e. added in a later
extension, like SPE added in v8.2, the alternative name format of:
    S<op0>_<op1>_C<crn>_C<crm>_<op2>
should be used; otherwise, calls to {READ,WRITE}_SPECIALREG() will
fail.

Use the MRS_REG_ALT_NAME() macro for SPE changing hex to decimal as
required by the macro.

Reviewed by:	andrew
Sponsored by:	Arm Ltd
Differential Revision:	https://reviews.freebsd.org/D45171

(cherry picked from commit f7bdaa103eb8906fc999c7fd5e8d6af440e26e6c)
This commit is contained in:
Zachary Leaf 2024-05-10 16:59:00 +01:00 committed by Andrew Turner
parent dd701489c8
commit d8a9e188f2

View file

@ -1636,11 +1636,12 @@
/* PMBIDR_EL1 */
#define PMBIDR_EL1 MRS_REG(PMBIDR_EL1)
#define PMBIDR_EL1_op0 0x3
#define PMBIDR_EL1_op1 0x0
#define PMBIDR_EL1_CRn 0x9
#define PMBIDR_EL1_CRm 0xa
#define PMBIDR_EL1_op2 0x7
#define PMBIDR_EL1_REG MRS_REG_ALT_NAME(PMBIDR_EL1)
#define PMBIDR_EL1_op0 3
#define PMBIDR_EL1_op1 0
#define PMBIDR_EL1_CRn 9
#define PMBIDR_EL1_CRm 10
#define PMBIDR_EL1_op2 7
#define PMBIDR_Align_SHIFT 0
#define PMBIDR_Align_MASK (UL(0xf) << PMBIDR_Align_SHIFT)
#define PMBIDR_P_SHIFT 4
@ -1650,11 +1651,12 @@
/* PMBLIMITR_EL1 */
#define PMBLIMITR_EL1 MRS_REG(PMBLIMITR_EL1)
#define PMBLIMITR_EL1_op0 0x3
#define PMBLIMITR_EL1_op1 0x0
#define PMBLIMITR_EL1_CRn 0x9
#define PMBLIMITR_EL1_CRm 0xa
#define PMBLIMITR_EL1_op2 0x0
#define PMBLIMITR_EL1_REG MRS_REG_ALT_NAME(PMBLIMITR_EL1)
#define PMBLIMITR_EL1_op0 3
#define PMBLIMITR_EL1_op1 0
#define PMBLIMITR_EL1_CRn 9
#define PMBLIMITR_EL1_CRm 10
#define PMBLIMITR_EL1_op2 0
#define PMBLIMITR_E_SHIFT 0
#define PMBLIMITR_E (UL(0x1) << PMBLIMITR_E_SHIFT)
#define PMBLIMITR_FM_SHIFT 1
@ -1667,22 +1669,24 @@
/* PMBPTR_EL1 */
#define PMBPTR_EL1 MRS_REG(PMBPTR_EL1)
#define PMBPTR_EL1_op0 0x3
#define PMBPTR_EL1_op1 0x0
#define PMBPTR_EL1_CRn 0x9
#define PMBPTR_EL1_CRm 0xa
#define PMBPTR_EL1_op2 0x1
#define PMBPTR_EL1_REG MRS_REG_ALT_NAME(PMBPTR_EL1)
#define PMBPTR_EL1_op0 3
#define PMBPTR_EL1_op1 0
#define PMBPTR_EL1_CRn 9
#define PMBPTR_EL1_CRm 10
#define PMBPTR_EL1_op2 1
#define PMBPTR_PTR_SHIFT 0
#define PMBPTR_PTR_MASK \
(UL(0xffffffffffffffff) << PMBPTR_PTR_SHIFT)
/* PMBSR_EL1 */
#define PMBSR_EL1 MRS_REG(PMBSR_EL1)
#define PMBSR_EL1_op0 0x3
#define PMBSR_EL1_op1 0x0
#define PMBSR_EL1_CRn 0x9
#define PMBSR_EL1_CRm 0xa
#define PMBSR_EL1_op2 0x3
#define PMBSR_EL1_REG MRS_REG_ALT_NAME(PMBSR_EL1)
#define PMBSR_EL1_op0 3
#define PMBSR_EL1_op1 0
#define PMBSR_EL1_CRn 9
#define PMBSR_EL1_CRm 10
#define PMBSR_EL1_op2 3
#define PMBSR_MSS_SHIFT 0
#define PMBSR_MSS_MASK (UL(0xffff) << PMBSR_MSS_SHIFT)
#define PMBSR_COLL_SHIFT 16
@ -1848,11 +1852,12 @@
/* PMSCR_EL1 */
#define PMSCR_EL1 MRS_REG(PMSCR_EL1)
#define PMSCR_EL1_op0 0x3
#define PMSCR_EL1_op1 0x0
#define PMSCR_EL1_CRn 0x9
#define PMSCR_EL1_CRm 0x9
#define PMSCR_EL1_op2 0x0
#define PMSCR_EL1_REG MRS_REG_ALT_NAME(PMSCR_EL1)
#define PMSCR_EL1_op0 3
#define PMSCR_EL1_op1 0
#define PMSCR_EL1_CRn 9
#define PMSCR_EL1_CRm 9
#define PMSCR_EL1_op2 0
#define PMSCR_E0SPE_SHIFT 0
#define PMSCR_E0SPE (UL(0x1) << PMSCR_E0SPE_SHIFT)
#define PMSCR_E1SPE_SHIFT 1
@ -1877,19 +1882,21 @@
/* PMSEVFR_EL1 */
#define PMSEVFR_EL1 MRS_REG(PMSEVFR_EL1)
#define PMSEVFR_EL1_op0 0x3
#define PMSEVFR_EL1_op1 0x0
#define PMSEVFR_EL1_CRn 0x9
#define PMSEVFR_EL1_CRm 0x9
#define PMSEVFR_EL1_op2 0x5
#define PMSEVFR_EL1_REG MRS_REG_ALT_NAME(PMSEVFR_EL1)
#define PMSEVFR_EL1_op0 3
#define PMSEVFR_EL1_op1 0
#define PMSEVFR_EL1_CRn 9
#define PMSEVFR_EL1_CRm 9
#define PMSEVFR_EL1_op2 5
/* PMSFCR_EL1 */
#define PMSFCR_EL1 MRS_REG(PMSFCR_EL1)
#define PMSFCR_EL1_op0 0x3
#define PMSFCR_EL1_op1 0x0
#define PMSFCR_EL1_CRn 0x9
#define PMSFCR_EL1_CRm 0x9
#define PMSFCR_EL1_op2 0x4
#define PMSFCR_EL1_REG MRS_REG_ALT_NAME(PMSFCR_EL1)
#define PMSFCR_EL1_op0 3
#define PMSFCR_EL1_op1 0
#define PMSFCR_EL1_CRn 9
#define PMSFCR_EL1_CRm 9
#define PMSFCR_EL1_op2 4
#define PMSFCR_FE_SHIFT 0
#define PMSFCR_FE (UL(0x1) << PMSFCR_FE_SHIFT)
#define PMSFCR_FT_SHIFT 1
@ -1907,11 +1914,12 @@
/* PMSICR_EL1 */
#define PMSICR_EL1 MRS_REG(PMSICR_EL1)
#define PMSICR_EL1_op0 0x3
#define PMSICR_EL1_op1 0x0
#define PMSICR_EL1_CRn 0x9
#define PMSICR_EL1_CRm 0x9
#define PMSICR_EL1_op2 0x2
#define PMSICR_EL1_REG MRS_REG_ALT_NAME(PMSICR_EL1)
#define PMSICR_EL1_op0 3
#define PMSICR_EL1_op1 0
#define PMSICR_EL1_CRn 9
#define PMSICR_EL1_CRm 9
#define PMSICR_EL1_op2 2
#define PMSICR_COUNT_SHIFT 0
#define PMSICR_COUNT_MASK (UL(0xffffffff) << PMSICR_COUNT_SHIFT)
#define PMSICR_ECOUNT_SHIFT 56
@ -1919,11 +1927,12 @@
/* PMSIDR_EL1 */
#define PMSIDR_EL1 MRS_REG(PMSIDR_EL1)
#define PMSIDR_EL1_op0 0x3
#define PMSIDR_EL1_op1 0x0
#define PMSIDR_EL1_CRn 0x9
#define PMSIDR_EL1_CRm 0x9
#define PMSIDR_EL1_op2 0x7
#define PMSIDR_EL1_REG MRS_REG_ALT_NAME(PMSIDR_EL1)
#define PMSIDR_EL1_op0 3
#define PMSIDR_EL1_op1 0
#define PMSIDR_EL1_CRn 9
#define PMSIDR_EL1_CRm 9
#define PMSIDR_EL1_op2 7
#define PMSIDR_FE_SHIFT 0
#define PMSIDR_FE (UL(0x1) << PMSIDR_FE_SHIFT)
#define PMSIDR_FT_SHIFT 1
@ -1951,11 +1960,12 @@
/* PMSIRR_EL1 */
#define PMSIRR_EL1 MRS_REG(PMSIRR_EL1)
#define PMSIRR_EL1_op0 0x3
#define PMSIRR_EL1_op1 0x0
#define PMSIRR_EL1_CRn 0x9
#define PMSIRR_EL1_CRm 0x9
#define PMSIRR_EL1_op2 0x3
#define PMSIRR_EL1_REG MRS_REG_ALT_NAME(PMSIRR_EL1)
#define PMSIRR_EL1_op0 3
#define PMSIRR_EL1_op1 0
#define PMSIRR_EL1_CRn 9
#define PMSIRR_EL1_CRm 9
#define PMSIRR_EL1_op2 3
#define PMSIRR_RND_SHIFT 0
#define PMSIRR_RND (UL(0x1) << PMSIRR_RND_SHIFT)
#define PMSIRR_INTERVAL_SHIFT 8
@ -1963,21 +1973,23 @@
/* PMSLATFR_EL1 */
#define PMSLATFR_EL1 MRS_REG(PMSLATFR_EL1)
#define PMSLATFR_EL1_op0 0x3
#define PMSLATFR_EL1_op1 0x0
#define PMSLATFR_EL1_CRn 0x9
#define PMSLATFR_EL1_CRm 0x9
#define PMSLATFR_EL1_op2 0x6
#define PMSLATFR_EL1_REG MRS_REG_ALT_NAME(PMSLATFR_EL1)
#define PMSLATFR_EL1_op0 3
#define PMSLATFR_EL1_op1 0
#define PMSLATFR_EL1_CRn 9
#define PMSLATFR_EL1_CRm 9
#define PMSLATFR_EL1_op2 6
#define PMSLATFR_MINLAT_SHIFT 0
#define PMSLATFR_MINLAT_MASK (UL(0xfff) << PMSLATFR_MINLAT_SHIFT)
/* PMSNEVFR_EL1 */
#define PMSNEVFR_EL1 MRS_REG(PMSNEVFR_EL1)
#define PMSNEVFR_EL1_op0 0x3
#define PMSNEVFR_EL1_op1 0x0
#define PMSNEVFR_EL1_CRn 0x9
#define PMSNEVFR_EL1_CRm 0x9
#define PMSNEVFR_EL1_op2 0x1
#define PMSNEVFR_EL1_REG MRS_REG_ALT_NAME(PMSNEVFR_EL1)
#define PMSNEVFR_EL1_op0 3
#define PMSNEVFR_EL1_op1 0
#define PMSNEVFR_EL1_CRn 9
#define PMSNEVFR_EL1_CRm 9
#define PMSNEVFR_EL1_op2 1
/* PMSWINC_EL0 */
#define PMSWINC_EL0 MRS_REG(PMSWINC_EL0)