git: 4dc815608e1f - main - Add more arm64 register op* and CR* values
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 11 Mar 2022 11:31:32 UTC
The branch main has been updated by andrew:
URL: https://cgit.FreeBSD.org/src/commit/?id=4dc815608e1f3fbb6e1061eca86d7c7bc103a359
commit 4dc815608e1f3fbb6e1061eca86d7c7bc103a359
Author: Andrew Turner <andrew@FreeBSD.org>
AuthorDate: 2022-03-11 11:19:05 +0000
Commit: Andrew Turner <andrew@FreeBSD.org>
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)