The branch main has been updated by andrew:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=4dc815608e1f3fbb6e1061eca86d7c7bc103a359

commit 4dc815608e1f3fbb6e1061eca86d7c7bc103a359
Author:     Andrew Turner <[email protected]>
AuthorDate: 2022-03-11 11:19:05 +0000
Commit:     Andrew Turner <[email protected]>
CommitDate: 2022-03-11 11:21:09 +0000

    Add more arm64 register op* and CR* values
    
    These will be used by bhyve/arm64.
    
    Sponsored by:   Innovate UK
---
 sys/arm64/include/armreg.h | 293 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 293 insertions(+)

diff --git a/sys/arm64/include/armreg.h b/sys/arm64/include/armreg.h
index d328cdb71043..2e34d037a524 100644
--- a/sys/arm64/include/armreg.h
+++ b/sys/arm64/include/armreg.h
@@ -77,10 +77,40 @@
 #define        CNTHCTL_EL1PCTEN        (1 << 0) /*Allow EL0/1 physical counter 
access*/
 
 /* CNTP_CTL_EL0 - Counter-timer Physical Timer Control register */
+#define        CNTP_CTL_EL0            MRS_REG(CNTP_CTL_EL0)
+#define        CNTP_CTL_EL0_op0        3
+#define        CNTP_CTL_EL0_op1        3
+#define        CNTP_CTL_EL0_CRn        14
+#define        CNTP_CTL_EL0_CRm        2
+#define        CNTP_CTL_EL0_op2        1
 #define        CNTP_CTL_ENABLE         (1 << 0)
 #define        CNTP_CTL_IMASK          (1 << 1)
 #define        CNTP_CTL_ISTATUS        (1 << 2)
 
+/* CNTP_CVAL_EL0 - Counter-timer Physical Timer CompareValue register */
+#define        CNTP_CVAL_EL0           MRS_REG(CNTP_CVAL_EL0)
+#define        CNTP_CVAL_EL0_op0       3
+#define        CNTP_CVAL_EL0_op1       3
+#define        CNTP_CVAL_EL0_CRn       14
+#define        CNTP_CVAL_EL0_CRm       2
+#define        CNTP_CVAL_EL0_op2       2
+
+/* CNTP_TVAL_EL0 - Counter-timer Physical Timer TimerValue register */
+#define        CNTP_TVAL_EL0           MRS_REG(CNTP_TVAL_EL0)
+#define        CNTP_TVAL_EL0_op0       3
+#define        CNTP_TVAL_EL0_op1       3
+#define        CNTP_TVAL_EL0_CRn       14
+#define        CNTP_TVAL_EL0_CRm       2
+#define        CNTP_TVAL_EL0_op2       0
+
+/* CNTPCT_EL0 - Counter-timer Physical Count register */
+#define        CNTPCT_EL0              MRS_REG(CNTPCT_EL0)
+#define        CNTPCT_EL0_op0          3
+#define        CNTPCT_EL0_op1          3
+#define        CNTPCT_EL0_CRn          14
+#define        CNTPCT_EL0_CRm          0
+#define        CNTPCT_EL0_op2          1
+
 /* CPACR_EL1 */
 #define        CPACR_FPEN_MASK         (0x3 << 20)
 #define         CPACR_FPEN_TRAP_ALL1   (0x0 << 20) /* Traps from EL0 and EL1 */
@@ -134,6 +164,11 @@
                                                /* through the intr framework */
 
 /* DBGBCR<n>_EL1 - Debug Breakpoint Control Registers */
+#define        DBGBCR_EL1_op0          2
+#define        DBGBCR_EL1_op1          0
+#define        DBGBCR_EL1_CRn          0
+/* DBGBCR_EL1_CRm indicates which watchpoint this register is for */
+#define        DBGBCR_EL1_op2          5
 #define        DBGBCR_EN               0x1
 #define        DBGBCR_PMC_SHIFT        1
 #define        DBGBCR_PMC              (0x3 << DBGBCR_PMC_SHIFT)
@@ -150,7 +185,19 @@
 #define        DBGBCR_BT_SHIFT         20
 #define        DBGBCR_BT               (0xf << DBGBCR_BT_SHIFT)
 
+/* DBGBVR<n>_EL1 - Debug Breakpoint Value Registers */
+#define        DBGBVR_EL1_op0          2
+#define        DBGBVR_EL1_op1          0
+#define        DBGBVR_EL1_CRn          0
+/* DBGBVR_EL1_CRm indicates which watchpoint this register is for */
+#define        DBGBVR_EL1_op2          4
+
 /* DBGWCR<n>_EL1 - Debug Watchpoint Control Registers */
+#define        DBGWCR_EL1_op0          2
+#define        DBGWCR_EL1_op1          0
+#define        DBGWCR_EL1_CRn          0
+/* DBGWCR_EL1_CRm indicates which watchpoint this register is for */
+#define        DBGWCR_EL1_op2          7
 #define        DBGWCR_EN               0x1
 #define        DBGWCR_PAC_SHIFT        1
 #define        DBGWCR_PAC              (0x3 << DBGWCR_PAC_SHIFT)
@@ -171,12 +218,51 @@
 #define        DBGWCR_MASK_SHIFT       24
 #define        DBGWCR_MASK             (0x1f << DBGWCR_MASK_SHIFT)
 
+/* DBGWVR<n>_EL1 - Debug Watchpoint Value Registers */
+#define        DBGWVR_EL1_op0          2
+#define        DBGWVR_EL1_op1          0
+#define        DBGWVR_EL1_CRn          0
+/* DBGWVR_EL1_CRm indicates which watchpoint this register is for */
+#define        DBGWVR_EL1_op2          6
+
 /* DCZID_EL0 - Data Cache Zero ID register */
 #define DCZID_DZP              (1 << 4) /* DC ZVA prohibited if non-0 */
 #define DCZID_BS_SHIFT         0
 #define DCZID_BS_MASK          (0xf << DCZID_BS_SHIFT)
 #define        DCZID_BS_SIZE(reg)      (((reg) & DCZID_BS_MASK) >> 
DCZID_BS_SHIFT)
 
+/* DBGAUTHSTATUS_EL1 */
+#define        DBGAUTHSTATUS_EL1               MRS_REG(DBGAUTHSTATUS_EL1)
+#define        DBGAUTHSTATUS_EL1_op0           2
+#define        DBGAUTHSTATUS_EL1_op1           0
+#define        DBGAUTHSTATUS_EL1_CRn           7
+#define        DBGAUTHSTATUS_EL1_CRm           14
+#define        DBGAUTHSTATUS_EL1_op2           6
+
+/* DBGCLAIMCLR_EL1 */
+#define        DBGCLAIMCLR_EL1                 MRS_REG(DBGCLAIMCLR_EL1)
+#define        DBGCLAIMCLR_EL1_op0             2
+#define        DBGCLAIMCLR_EL1_op1             0
+#define        DBGCLAIMCLR_EL1_CRn             7
+#define        DBGCLAIMCLR_EL1_CRm             9
+#define        DBGCLAIMCLR_EL1_op2             6
+
+/* DBGCLAIMSET_EL1 */
+#define        DBGCLAIMSET_EL1                 MRS_REG(DBGCLAIMSET_EL1)
+#define        DBGCLAIMSET_EL1_op0             2
+#define        DBGCLAIMSET_EL1_op1             0
+#define        DBGCLAIMSET_EL1_CRn             7
+#define        DBGCLAIMSET_EL1_CRm             8
+#define        DBGCLAIMSET_EL1_op2             6
+
+/* DBGPRCR_EL1 */
+#define        DBGPRCR_EL1                     MRS_REG(DBGPRCR_EL1)
+#define        DBGPRCR_EL1_op0                 2
+#define        DBGPRCR_EL1_op1                 0
+#define        DBGPRCR_EL1_CRn                 1
+#define        DBGPRCR_EL1_CRm                 4
+#define        DBGPRCR_EL1_op2                 4
+
 /* ESR_ELx */
 #define        ESR_ELx_ISS_MASK        0x01ffffff
 #define         ISS_INSN_FnV           (0x01 << 10)
@@ -293,6 +379,12 @@
 #define        ICC_PMR_EL1_PRIO_MASK   (0xFFUL)
 
 /* ICC_SGI1R_EL1 */
+#define        ICC_SGI1R_EL1                   MRS_REG(ICC_SGI1R_EL1)
+#define        ICC_SGI1R_EL1_op0               3
+#define        ICC_SGI1R_EL1_op1               0
+#define        ICC_SGI1R_EL1_CRn               12
+#define        ICC_SGI1R_EL1_CRm               11
+#define        ICC_SGI1R_EL1_op2               5
 #define        ICC_SGI1R_EL1_TL_MASK           0xffffUL
 #define        ICC_SGI1R_EL1_AFF1_SHIFT        16
 #define        ICC_SGI1R_EL1_SGIID_SHIFT       24
@@ -917,7 +1009,29 @@
 #define         MAIR_NORMAL_WT         0xbb
 #define         MAIR_NORMAL_WB         0xff
 
+/* MDCCINT_EL1 */
+#define        MDCCINT_EL1                     MRS_REG(MDCCINT_EL1)
+#define        MDCCINT_EL1_op0                 2
+#define        MDCCINT_EL1_op1                 0
+#define        MDCCINT_EL1_CRn                 0
+#define        MDCCINT_EL1_CRm                 2
+#define        MDCCINT_EL1_op2                 0
+
+/* MDCCSR_EL0 */
+#define        MDCCSR_EL0                      MRS_REG(MDCCSR_EL0)
+#define        MDCCSR_EL0_op0                  2
+#define        MDCCSR_EL0_op1                  3
+#define        MDCCSR_EL0_CRn                  0
+#define        MDCCSR_EL0_CRm                  1
+#define        MDCCSR_EL0_op2                  0
+
 /* MDSCR_EL1 - Monitor Debug System Control Register */
+#define        MDSCR_EL1                       MRS_REG(MDSCR_EL1)
+#define        MDSCR_EL1_op0                   2
+#define        MDSCR_EL1_op1                   0
+#define        MDSCR_EL1_CRn                   0
+#define        MDSCR_EL1_CRm                   2
+#define        MDSCR_EL1_op2                   2
 #define        MDSCR_SS_SHIFT                  0
 #define        MDSCR_SS                        (UL(0x1) << MDSCR_SS_SHIFT)
 #define        MDSCR_KDE_SHIFT                 13
@@ -1027,6 +1141,30 @@
 #define         MVFR1_SIMDFMAC_NONE            (UL(0x0) << 
MVFR1_SIMDFMAC_SHIFT)
 #define         MVFR1_SIMDFMAC_IMPL            (UL(0x1) << 
MVFR1_SIMDFMAC_SHIFT)
 
+/* OSDLR_EL1 */
+#define        OSDLR_EL1                       MRS_REG(OSDLR_EL1)
+#define        OSDLR_EL1_op0                   2
+#define        OSDLR_EL1_op1                   0
+#define        OSDLR_EL1_CRn                   1
+#define        OSDLR_EL1_CRm                   3
+#define        OSDLR_EL1_op2                   4
+
+/* OSLAR_EL1 */
+#define        OSLAR_EL1                       MRS_REG(OSLAR_EL1)
+#define        OSLAR_EL1_op0                   2
+#define        OSLAR_EL1_op1                   0
+#define        OSLAR_EL1_CRn                   1
+#define        OSLAR_EL1_CRm                   0
+#define        OSLAR_EL1_op2                   4
+
+/* OSLSR_EL1 */
+#define        OSLSR_EL1                       MRS_REG(OSLSR_EL1)
+#define        OSLSR_EL1_op0                   2
+#define        OSLSR_EL1_op1                   0
+#define        OSLSR_EL1_CRn                   1
+#define        OSLSR_EL1_CRm                   1
+#define        OSLSR_EL1_op2                   4
+
 /* PAR_EL1 - Physical Address Register */
 #define        PAR_F_SHIFT             0
 #define        PAR_F                   (0x1 << PAR_F_SHIFT)
@@ -1111,7 +1249,61 @@
 #define        PMBSR_EC_SHIFT                  26
 #define        PMBSR_EC_MASK                   (UL(0x3f) << PMBSR_EC_SHIFT)
 
+/* PMCCFILTR_EL0 */
+#define        PMCCFILTR_EL0                   MRS_REG(PMCCFILTR_EL0)
+#define        PMCCFILTR_EL0_op0               3
+#define        PMCCFILTR_EL0_op1               3
+#define        PMCCFILTR_EL0_CRn               14
+#define        PMCCFILTR_EL0_CRm               15
+#define        PMCCFILTR_EL0_op2               7
+
+/* PMCCNTR_EL0 */
+#define        PMCCNTR_EL0                     MRS_REG(PMCCNTR_EL0)
+#define        PMCCNTR_EL0_op0                 3
+#define        PMCCNTR_EL0_op1                 3
+#define        PMCCNTR_EL0_CRn                 9
+#define        PMCCNTR_EL0_CRm                 13
+#define        PMCCNTR_EL0_op2                 0
+
+/* PMCEID0_EL0 */
+#define        PMCEID0_EL0                     MRS_REG(PMCEID0_EL0)
+#define        PMCEID0_EL0_op0                 3
+#define        PMCEID0_EL0_op1                 3
+#define        PMCEID0_EL0_CRn                 9
+#define        PMCEID0_EL0_CRm                 12
+#define        PMCEID0_EL0_op2                 6
+
+/* PMCEID1_EL0 */
+#define        PMCEID1_EL0                     MRS_REG(PMCEID1_EL0)
+#define        PMCEID1_EL0_op0                 3
+#define        PMCEID1_EL0_op1                 3
+#define        PMCEID1_EL0_CRn                 9
+#define        PMCEID1_EL0_CRm                 12
+#define        PMCEID1_EL0_op2                 7
+
+/* PMCNTENCLR_EL0 */
+#define        PMCNTENCLR_EL0                  MRS_REG(PMCNTENCLR_EL0)
+#define        PMCNTENCLR_EL0_op0              3
+#define        PMCNTENCLR_EL0_op1              3
+#define        PMCNTENCLR_EL0_CRn              9
+#define        PMCNTENCLR_EL0_CRm              12
+#define        PMCNTENCLR_EL0_op2              2
+
+/* PMCNTENSET_EL0 */
+#define        PMCNTENSET_EL0                  MRS_REG(PMCNTENSET_EL0)
+#define        PMCNTENSET_EL0_op0              3
+#define        PMCNTENSET_EL0_op1              3
+#define        PMCNTENSET_EL0_CRn              9
+#define        PMCNTENSET_EL0_CRm              12
+#define        PMCNTENSET_EL0_op2              1
+
 /* PMCR_EL0 - Perfomance Monitoring Counters */
+#define        PMCR_EL0                        MRS_REG(PMCR_EL0)
+#define        PMCR_EL0_op0                    3
+#define        PMCR_EL0_op1                    3
+#define        PMCR_EL0_CRn                    9
+#define        PMCR_EL0_CRm                    12
+#define        PMCR_EL0_op2                    0
 #define        PMCR_E                          (1 << 0) /* Enable all counters 
*/
 #define        PMCR_P                          (1 << 1) /* Reset all counters 
*/
 #define        PMCR_C                          (1 << 2) /* Clock counter reset 
*/
@@ -1140,6 +1332,66 @@
 #define        PMCR_N_SHIFT                    11  /* Number of counters 
implemented */
 #define        PMCR_N_MASK                     (0x1f << PMCR_N_SHIFT)
 
+/* PMEVCNTR<n>_EL0 */
+#define        PMEVCNTR_EL0_op0                3
+#define        PMEVCNTR_EL0_op1                3
+#define        PMEVCNTR_EL0_CRn                14
+#define        PMEVCNTR_EL0_CRm                8
+/*
+ * PMEVCNTRn_EL0_CRm[1:0] holds the upper 2 bits of 'n'
+ * PMEVCNTRn_EL0_op2 holds the lower 3 bits of 'n'
+ */
+
+/* PMEVTYPER<n>_EL0 */
+#define        PMEVTYPER_EL0_op0               3
+#define        PMEVTYPER_EL0_op1               3
+#define        PMEVTYPER_EL0_CRn               14
+#define        PMEVTYPER_EL0_CRm               12
+/*
+ * PMEVTYPERn_EL0_CRm[1:0] holds the upper 2 bits of 'n'
+ * PMEVTYPERn_EL0_op2 holds the lower 3 bits of 'n'
+ */
+
+/* PMINTENCLR_EL1 */
+#define        PMINTENCLR_EL1                  MRS_REG(PMINTENCLR_EL1)
+#define        PMINTENCLR_EL1_op0              3
+#define        PMINTENCLR_EL1_op1              0
+#define        PMINTENCLR_EL1_CRn              9
+#define        PMINTENCLR_EL1_CRm              14
+#define        PMINTENCLR_EL1_op2              2
+
+/* PMINTENSET_EL1 */
+#define        PMINTENSET_EL1                  MRS_REG(PMINTENSET_EL1)
+#define        PMINTENSET_EL1_op0              3
+#define        PMINTENSET_EL1_op1              0
+#define        PMINTENSET_EL1_CRn              9
+#define        PMINTENSET_EL1_CRm              14
+#define        PMINTENSET_EL1_op2              1
+
+/* PMMIR_EL1 */
+#define        PMMIR_EL1                       MRS_REG(PMMIR_EL1)
+#define        PMMIR_EL1_op0                   3
+#define        PMMIR_EL1_op1                   0
+#define        PMMIR_EL1_CRn                   9
+#define        PMMIR_EL1_CRm                   14
+#define        PMMIR_EL1_op2                   6
+
+/* PMOVSCLR_EL0 */
+#define        PMOVSCLR_EL0                    MRS_REG(PMOVSCLR_EL0)
+#define        PMOVSCLR_EL0_op0                3
+#define        PMOVSCLR_EL0_op1                3
+#define        PMOVSCLR_EL0_CRn                9
+#define        PMOVSCLR_EL0_CRm                12
+#define        PMOVSCLR_EL0_op2                3
+
+/* PMOVSSET_EL0 */
+#define        PMOVSSET_EL0                    MRS_REG(PMOVSSET_EL0)
+#define        PMOVSSET_EL0_op0                3
+#define        PMOVSSET_EL0_op1                3
+#define        PMOVSSET_EL0_CRn                9
+#define        PMOVSSET_EL0_CRm                14
+#define        PMOVSSET_EL0_op2                3
+
 /* PMSCR_EL1 */
 #define        PMSCR_EL1                       MRS_REG(PMSCR_EL1)
 #define        PMSCR_EL1_op0                   0x3
@@ -1160,6 +1412,15 @@
 #define        PMSCR_PCT_SHIFT                 6
 #define        PMSCR_PCT_MASK                  (UL(0x3) << PMSCR_PCT_SHIFT)
 
+/* PMSELR_EL0 */
+#define        PMSELR_EL0                      MRS_REG(PMSELR_EL0)
+#define        PMSELR_EL0_op0                  3
+#define        PMSELR_EL0_op1                  3
+#define        PMSELR_EL0_CRn                  9
+#define        PMSELR_EL0_CRm                  12
+#define        PMSELR_EL0_op2                  5
+#define        PMSELR_SEL_MASK                 0x1f
+
 /* PMSEVFR_EL1 */
 #define        PMSEVFR_EL1                     MRS_REG(PMSEVFR_EL1)
 #define        PMSEVFR_EL1_op0                 0x3
@@ -1264,6 +1525,38 @@
 #define        PMSNEVFR_EL1_CRm                0x9
 #define        PMSNEVFR_EL1_op2                0x1
 
+/* PMSWINC_EL0 */
+#define        PMSWINC_EL0                     MRS_REG(PMSWINC_EL0)
+#define        PMSWINC_EL0_op0                 3
+#define        PMSWINC_EL0_op1                 3
+#define        PMSWINC_EL0_CRn                 9
+#define        PMSWINC_EL0_CRm                 12
+#define        PMSWINC_EL0_op2                 4
+
+/* PMUSERENR_EL0 */
+#define        PMUSERENR_EL0                   MRS_REG(PMUSERENR_EL0)
+#define        PMUSERENR_EL0_op0               3
+#define        PMUSERENR_EL0_op1               3
+#define        PMUSERENR_EL0_CRn               9
+#define        PMUSERENR_EL0_CRm               14
+#define        PMUSERENR_EL0_op2               0
+
+/* PMXEVCNTR_EL0 */
+#define        PMXEVCNTR_EL0                   MRS_REG(PMXEVCNTR_EL0)
+#define        PMXEVCNTR_EL0_op0               3
+#define        PMXEVCNTR_EL0_op1               3
+#define        PMXEVCNTR_EL0_CRn               9
+#define        PMXEVCNTR_EL0_CRm               13
+#define        PMXEVCNTR_EL0_op2               2
+
+/* PMXEVTYPER_EL0 */
+#define        PMXEVTYPER_EL0                  MRS_REG(PMXEVTYPER_EL0)
+#define        PMXEVTYPER_EL0_op0              3
+#define        PMXEVTYPER_EL0_op1              3
+#define        PMXEVTYPER_EL0_CRn              9
+#define        PMXEVTYPER_EL0_CRm              13
+#define        PMXEVTYPER_EL0_op2              1
+
 /* SCTLR_EL1 - System Control Register */
 #define        SCTLR_RES1      0x30d00800      /* Reserved ARMv8.0, write 1 */
 #define        SCTLR_M                         (UL(0x1) << 0)

Reply via email to