|
|
@@ -172,6 +172,99 @@
|
|
|
#define SYS_FAR_EL1 sys_reg(3, 0, 6, 0, 0)
|
|
|
#define SYS_PAR_EL1 sys_reg(3, 0, 7, 4, 0)
|
|
|
|
|
|
+/*** Statistical Profiling Extension ***/
|
|
|
+/* ID registers */
|
|
|
+#define SYS_PMSIDR_EL1 sys_reg(3, 0, 9, 9, 7)
|
|
|
+#define SYS_PMSIDR_EL1_FE_SHIFT 0
|
|
|
+#define SYS_PMSIDR_EL1_FT_SHIFT 1
|
|
|
+#define SYS_PMSIDR_EL1_FL_SHIFT 2
|
|
|
+#define SYS_PMSIDR_EL1_ARCHINST_SHIFT 3
|
|
|
+#define SYS_PMSIDR_EL1_LDS_SHIFT 4
|
|
|
+#define SYS_PMSIDR_EL1_ERND_SHIFT 5
|
|
|
+#define SYS_PMSIDR_EL1_INTERVAL_SHIFT 8
|
|
|
+#define SYS_PMSIDR_EL1_INTERVAL_MASK 0xfUL
|
|
|
+#define SYS_PMSIDR_EL1_MAXSIZE_SHIFT 12
|
|
|
+#define SYS_PMSIDR_EL1_MAXSIZE_MASK 0xfUL
|
|
|
+#define SYS_PMSIDR_EL1_COUNTSIZE_SHIFT 16
|
|
|
+#define SYS_PMSIDR_EL1_COUNTSIZE_MASK 0xfUL
|
|
|
+
|
|
|
+#define SYS_PMBIDR_EL1 sys_reg(3, 0, 9, 10, 7)
|
|
|
+#define SYS_PMBIDR_EL1_ALIGN_SHIFT 0
|
|
|
+#define SYS_PMBIDR_EL1_ALIGN_MASK 0xfU
|
|
|
+#define SYS_PMBIDR_EL1_P_SHIFT 4
|
|
|
+#define SYS_PMBIDR_EL1_F_SHIFT 5
|
|
|
+
|
|
|
+/* Sampling controls */
|
|
|
+#define SYS_PMSCR_EL1 sys_reg(3, 0, 9, 9, 0)
|
|
|
+#define SYS_PMSCR_EL1_E0SPE_SHIFT 0
|
|
|
+#define SYS_PMSCR_EL1_E1SPE_SHIFT 1
|
|
|
+#define SYS_PMSCR_EL1_CX_SHIFT 3
|
|
|
+#define SYS_PMSCR_EL1_PA_SHIFT 4
|
|
|
+#define SYS_PMSCR_EL1_TS_SHIFT 5
|
|
|
+#define SYS_PMSCR_EL1_PCT_SHIFT 6
|
|
|
+
|
|
|
+#define SYS_PMSCR_EL2 sys_reg(3, 4, 9, 9, 0)
|
|
|
+#define SYS_PMSCR_EL2_E0HSPE_SHIFT 0
|
|
|
+#define SYS_PMSCR_EL2_E2SPE_SHIFT 1
|
|
|
+#define SYS_PMSCR_EL2_CX_SHIFT 3
|
|
|
+#define SYS_PMSCR_EL2_PA_SHIFT 4
|
|
|
+#define SYS_PMSCR_EL2_TS_SHIFT 5
|
|
|
+#define SYS_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 SYS_PMSIRR_EL1_RND_SHIFT 0
|
|
|
+#define SYS_PMSIRR_EL1_INTERVAL_SHIFT 8
|
|
|
+#define SYS_PMSIRR_EL1_INTERVAL_MASK 0xffffffUL
|
|
|
+
|
|
|
+/* Filtering controls */
|
|
|
+#define SYS_PMSFCR_EL1 sys_reg(3, 0, 9, 9, 4)
|
|
|
+#define SYS_PMSFCR_EL1_FE_SHIFT 0
|
|
|
+#define SYS_PMSFCR_EL1_FT_SHIFT 1
|
|
|
+#define SYS_PMSFCR_EL1_FL_SHIFT 2
|
|
|
+#define SYS_PMSFCR_EL1_B_SHIFT 16
|
|
|
+#define SYS_PMSFCR_EL1_LD_SHIFT 17
|
|
|
+#define SYS_PMSFCR_EL1_ST_SHIFT 18
|
|
|
+
|
|
|
+#define SYS_PMSEVFR_EL1 sys_reg(3, 0, 9, 9, 5)
|
|
|
+#define SYS_PMSEVFR_EL1_RES0 0x0000ffff00ff0f55UL
|
|
|
+
|
|
|
+#define SYS_PMSLATFR_EL1 sys_reg(3, 0, 9, 9, 6)
|
|
|
+#define SYS_PMSLATFR_EL1_MINLAT_SHIFT 0
|
|
|
+
|
|
|
+/* Buffer controls */
|
|
|
+#define SYS_PMBLIMITR_EL1 sys_reg(3, 0, 9, 10, 0)
|
|
|
+#define SYS_PMBLIMITR_EL1_E_SHIFT 0
|
|
|
+#define SYS_PMBLIMITR_EL1_FM_SHIFT 1
|
|
|
+#define SYS_PMBLIMITR_EL1_FM_MASK 0x3UL
|
|
|
+#define SYS_PMBLIMITR_EL1_FM_STOP_IRQ (0 << SYS_PMBLIMITR_EL1_FM_SHIFT)
|
|
|
+
|
|
|
+#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 SYS_PMBSR_EL1_COLL_SHIFT 16
|
|
|
+#define SYS_PMBSR_EL1_S_SHIFT 17
|
|
|
+#define SYS_PMBSR_EL1_EA_SHIFT 18
|
|
|
+#define SYS_PMBSR_EL1_DL_SHIFT 19
|
|
|
+#define SYS_PMBSR_EL1_EC_SHIFT 26
|
|
|
+#define SYS_PMBSR_EL1_EC_MASK 0x3fUL
|
|
|
+
|
|
|
+#define SYS_PMBSR_EL1_EC_BUF (0x0UL << SYS_PMBSR_EL1_EC_SHIFT)
|
|
|
+#define SYS_PMBSR_EL1_EC_FAULT_S1 (0x24UL << SYS_PMBSR_EL1_EC_SHIFT)
|
|
|
+#define SYS_PMBSR_EL1_EC_FAULT_S2 (0x25UL << SYS_PMBSR_EL1_EC_SHIFT)
|
|
|
+
|
|
|
+#define SYS_PMBSR_EL1_FAULT_FSC_SHIFT 0
|
|
|
+#define SYS_PMBSR_EL1_FAULT_FSC_MASK 0x3fUL
|
|
|
+
|
|
|
+#define SYS_PMBSR_EL1_BUF_BSC_SHIFT 0
|
|
|
+#define SYS_PMBSR_EL1_BUF_BSC_MASK 0x3fUL
|
|
|
+
|
|
|
+#define SYS_PMBSR_EL1_BUF_BSC_FULL (0x1UL << SYS_PMBSR_EL1_BUF_BSC_SHIFT)
|
|
|
+
|
|
|
+/*** End of Statistical Profiling Extension ***/
|
|
|
+
|
|
|
#define SYS_PMINTENSET_EL1 sys_reg(3, 0, 9, 14, 1)
|
|
|
#define SYS_PMINTENCLR_EL1 sys_reg(3, 0, 9, 14, 2)
|
|
|
|