svn commit: r357049 - in head/sys/arm64: arm64 include

Mark Johnston markj at FreeBSD.org
Thu Jan 23 16:10:39 UTC 2020


Author: markj
Date: Thu Jan 23 16:10:38 2020
New Revision: 357049
URL: https://svnweb.freebsd.org/changeset/base/357049

Log:
  Print missing ID_AA64PFR{0,1}_EL1 register fields.
  
  MFC after:	1 week
  Sponsored by:	The FreeBSD Foundation
  Differential Revision:	https://reviews.freebsd.org/D23213

Modified:
  head/sys/arm64/arm64/identcpu.c
  head/sys/arm64/include/armreg.h

Modified: head/sys/arm64/arm64/identcpu.c
==============================================================================
--- head/sys/arm64/arm64/identcpu.c	Thu Jan 23 16:07:27 2020	(r357048)
+++ head/sys/arm64/arm64/identcpu.c	Thu Jan 23 16:10:38 2020	(r357049)
@@ -643,6 +643,41 @@ static struct mrs_field id_aa64mmfr2_fields[] = {
 
 
 /* ID_AA64PFR0_EL1 */
+static struct mrs_field_value id_aa64pfr0_csv3[] = {
+	MRS_FIELD_VALUE(ID_AA64PFR0_CSV3_NONE, ""),
+	MRS_FIELD_VALUE(ID_AA64PFR0_CSV3_ISOLATED, "CSV3"),
+	MRS_FIELD_VALUE_END,
+};
+
+static struct mrs_field_value id_aa64pfr0_csv2[] = {
+	MRS_FIELD_VALUE(ID_AA64PFR0_CSV2_NONE, ""),
+	MRS_FIELD_VALUE(ID_AA64PFR0_CSV2_ISOLATED, "CSV2"),
+	MRS_FIELD_VALUE(ID_AA64PFR0_CSV2_SCXTNUM, "SCXTNUM"),
+	MRS_FIELD_VALUE_END,
+};
+
+static struct mrs_field_value id_aa64pfr0_dit[] = {
+	MRS_FIELD_VALUE(ID_AA64PFR0_DIT_NONE, ""),
+	MRS_FIELD_VALUE(ID_AA64PFR0_DIT_PSTATE, "PSTATE.DIT"),
+	MRS_FIELD_VALUE_END,
+};
+
+static struct mrs_field_value id_aa64pfr0_amu[] = {
+	MRS_FIELD_VALUE(ID_AA64PFR0_AMU_NONE, ""),
+	MRS_FIELD_VALUE(ID_AA64PFR0_AMU_V1, "AMUv1"),
+	MRS_FIELD_VALUE_END,
+};
+
+static struct mrs_field_value id_aa64pfr0_mpam[] = {
+	MRS_FIELD_VALUE_NONE_IMPL(ID_AA64PFR0, MPAM, NONE, IMPL),
+	MRS_FIELD_VALUE_END,
+};
+
+static struct mrs_field_value id_aa64pfr0_sel2[] = {
+	MRS_FIELD_VALUE_NONE_IMPL(ID_AA64PFR0, SEL2, NONE, IMPL),
+	MRS_FIELD_VALUE_END,
+};
+
 static struct mrs_field_value id_aa64pfr0_sve[] = {
 	MRS_FIELD_VALUE_NONE_IMPL(ID_AA64PFR0, SVE, NONE, IMPL),
 	MRS_FIELD_VALUE_END,
@@ -696,6 +731,12 @@ static struct mrs_field_value id_aa64pfr0_el0[] = {
 };
 
 static struct mrs_field id_aa64pfr0_fields[] = {
+	MRS_FIELD(ID_AA64PFR0, CSV3, false, MRS_EXACT, id_aa64pfr0_csv3),
+	MRS_FIELD(ID_AA64PFR0, CSV2, false, MRS_EXACT, id_aa64pfr0_csv2),
+	MRS_FIELD(ID_AA64PFR0, DIT, false, MRS_EXACT, id_aa64pfr0_dit),
+	MRS_FIELD(ID_AA64PFR0, AMU, false, MRS_EXACT, id_aa64pfr0_amu),
+	MRS_FIELD(ID_AA64PFR0, MPAM, false, MRS_EXACT, id_aa64pfr0_mpam),
+	MRS_FIELD(ID_AA64PFR0, SEL2, false, MRS_EXACT, id_aa64pfr0_sel2),
 	MRS_FIELD(ID_AA64PFR0, SVE, false, MRS_EXACT, id_aa64pfr0_sve),
 	MRS_FIELD(ID_AA64PFR0, RAS, false, MRS_EXACT, id_aa64pfr0_ras),
 	MRS_FIELD(ID_AA64PFR0, GIC, false, MRS_EXACT, id_aa64pfr0_gic),
@@ -710,7 +751,30 @@ static struct mrs_field id_aa64pfr0_fields[] = {
 
 
 /* ID_AA64PFR1_EL1 */
+static struct mrs_field_value id_aa64pfr1_bt[] = {
+	MRS_FIELD_VALUE(ID_AA64PFR1_BT_NONE, ""),
+	MRS_FIELD_VALUE(ID_AA64PFR1_BT_IMPL, "BTI"),
+	MRS_FIELD_VALUE_END,
+};
+
+static struct mrs_field_value id_aa64pfr1_ssbs[] = {
+	MRS_FIELD_VALUE(ID_AA64PFR1_SSBS_NONE, ""),
+	MRS_FIELD_VALUE(ID_AA64PFR1_SSBS_PSTATE, "PSTATE.SSBS"),
+	MRS_FIELD_VALUE(ID_AA64PFR1_SSBS_PSTATE_MSR, "PSTATE.SSBS MSR"),
+	MRS_FIELD_VALUE_END,
+};
+
+static struct mrs_field_value id_aa64pfr1_mte[] = {
+	MRS_FIELD_VALUE(ID_AA64PFR1_MTE_NONE, ""),
+	MRS_FIELD_VALUE(ID_AA64PFR1_MTE_IMPL_EL0, "MTE EL0"),
+	MRS_FIELD_VALUE(ID_AA64PFR1_MTE_IMPL, "MTE"),
+	MRS_FIELD_VALUE_END,
+};
+
 static struct mrs_field id_aa64pfr1_fields[] = {
+	MRS_FIELD(ID_AA64PFR1, BT, false, MRS_EXACT, id_aa64pfr1_bt),
+	MRS_FIELD(ID_AA64PFR1, SSBS, false, MRS_EXACT, id_aa64pfr1_ssbs),
+	MRS_FIELD(ID_AA64PFR1, MTE, false, MRS_EXACT, id_aa64pfr1_mte),
 	MRS_FIELD_END,
 };
 
@@ -743,6 +807,13 @@ static struct mrs_user_reg user_regs[] = {
 		.Op2 = 0,
 		.offset = __offsetof(struct cpu_desc, id_aa64pfr0),
 		.fields = id_aa64pfr0_fields,
+	},
+	{	/* id_aa64pfr0_el1 */
+		.reg = ID_AA64PFR1_EL1,
+		.CRm = 4,
+		.Op2 = 1,
+		.offset = __offsetof(struct cpu_desc, id_aa64pfr1),
+		.fields = id_aa64pfr1_fields,
 	},
 	{	/* id_aa64dfr0_el1 */
 		.reg = ID_AA64DFR0_EL1,

Modified: head/sys/arm64/include/armreg.h
==============================================================================
--- head/sys/arm64/include/armreg.h	Thu Jan 23 16:07:27 2020	(r357048)
+++ head/sys/arm64/include/armreg.h	Thu Jan 23 16:10:38 2020	(r357049)
@@ -517,6 +517,62 @@
 #define	ID_AA64PFR0_SVE_VAL(x)		((x) & ID_AA64PFR0_SVE_MASK)
 #define	 ID_AA64PFR0_SVE_NONE		(UL(0x0) << ID_AA64PFR0_SVE_SHIFT)
 #define	 ID_AA64PFR0_SVE_IMPL		(UL(0x1) << ID_AA64PFR0_SVE_SHIFT)
+#define	ID_AA64PFR0_SEL2_SHIFT		36
+#define	ID_AA64PFR0_SEL2_MASK		(UL(0xf) << ID_AA64PFR0_SEL2_SHIFT)
+#define	ID_AA64PFR0_SEL2_VAL(x)		((x) & ID_AA64PFR0_SEL2_MASK)
+#define	 ID_AA64PFR0_SEL2_NONE		(UL(0x0) << ID_AA64PFR0_SEL2_SHIFT)
+#define	 ID_AA64PFR0_SEL2_IMPL		(UL(0x1) << ID_AA64PFR0_SEL2_SHIFT)
+#define	ID_AA64PFR0_MPAM_SHIFT		40
+#define	ID_AA64PFR0_MPAM_MASK		(UL(0xf) << ID_AA64PFR0_MPAM_SHIFT)
+#define	ID_AA64PFR0_MPAM_VAL(x)		((x) & ID_AA64PFR0_MPAM_MASK)
+#define	 ID_AA64PFR0_MPAM_NONE		(UL(0x0) << ID_AA64PFR0_MPAM_SHIFT)
+#define	 ID_AA64PFR0_MPAM_IMPL		(UL(0x1) << ID_AA64PFR0_MPAM_SHIFT)
+#define	ID_AA64PFR0_AMU_SHIFT		44
+#define	ID_AA64PFR0_AMU_MASK		(UL(0xf) << ID_AA64PFR0_AMU_SHIFT)
+#define	ID_AA64PFR0_AMU_VAL(x)		((x) & ID_AA64PFR0_AMU_MASK)
+#define	 ID_AA64PFR0_AMU_NONE		(UL(0x0) << ID_AA64PFR0_AMU_SHIFT)
+#define	 ID_AA64PFR0_AMU_V1		(UL(0x1) << ID_AA64PFR0_AMU_SHIFT)
+#define	ID_AA64PFR0_DIT_SHIFT		48
+#define	ID_AA64PFR0_DIT_MASK		(UL(0xf) << ID_AA64PFR0_DIT_SHIFT)
+#define	ID_AA64PFR0_DIT_VAL(x)		((x) & ID_AA64PFR0_DIT_MASK)
+#define	 ID_AA64PFR0_DIT_NONE		(UL(0x0) << ID_AA64PFR0_DIT_SHIFT)
+#define	 ID_AA64PFR0_DIT_PSTATE		(UL(0x1) << ID_AA64PFR0_DIT_SHIFT)
+#define	ID_AA64PFR0_CSV2_SHIFT		56
+#define	ID_AA64PFR0_CSV2_MASK		(UL(0xf) << ID_AA64PFR0_CSV2_SHIFT)
+#define	ID_AA64PFR0_CSV2_VAL(x)		((x) & ID_AA64PFR0_CSV2_MASK)
+#define	 ID_AA64PFR0_CSV2_NONE		(UL(0x0) << ID_AA64PFR0_CSV2_SHIFT)
+#define	 ID_AA64PFR0_CSV2_ISOLATED	(UL(0x1) << ID_AA64PFR0_CSV2_SHIFT)
+#define	 ID_AA64PFR0_CSV2_SCXTNUM	(UL(0x2) << ID_AA64PFR0_CSV2_SHIFT)
+#define	ID_AA64PFR0_CSV3_SHIFT		60
+#define	ID_AA64PFR0_CSV3_MASK		(UL(0xf) << ID_AA64PFR0_CSV3_SHIFT)
+#define	ID_AA64PFR0_CSV3_VAL(x)		((x) & ID_AA64PFR0_CSV3_MASK)
+#define	 ID_AA64PFR0_CSV3_NONE		(UL(0x0) << ID_AA64PFR0_CSV3_SHIFT)
+#define	 ID_AA64PFR0_CSV3_ISOLATED	(UL(0x1) << ID_AA64PFR0_CSV3_SHIFT)
+
+/* ID_AA64PFR1_EL1 */
+#define	ID_AA64PFR1_EL1			MRS_REG(3, 0, 0, 4, 1)
+#define	ID_AA64PFR1_BT_SHIFT		0
+#define	ID_AA64PFR1_BT_MASK		(UL(0xf) << ID_AA64PFR1_BT_SHIFT)
+#define	ID_AA64PFR1_BT_VAL(x)		((x) & ID_AA64PFR1_BT_MASK)
+#define	 ID_AA64PFR1_BT_NONE		(UL(0x0) << ID_AA64PFR1_BT_SHIFT)
+#define	 ID_AA64PFR1_BT_IMPL		(UL(0x1) << ID_AA64PFR1_BT_SHIFT)
+#define	ID_AA64PFR1_SSBS_SHIFT		4
+#define	ID_AA64PFR1_SSBS_MASK		(UL(0xf) << ID_AA64PFR1_SSBS_SHIFT)
+#define	ID_AA64PFR1_SSBS_VAL(x)		((x) & ID_AA64PFR1_SSBS_MASK)
+#define	 ID_AA64PFR1_SSBS_NONE		(UL(0x0) << ID_AA64PFR1_SSBS_SHIFT)
+#define	 ID_AA64PFR1_SSBS_PSTATE	(UL(0x1) << ID_AA64PFR1_SSBS_SHIFT)
+#define	 ID_AA64PFR1_SSBS_PSTATE_MSR	(UL(0x2) << ID_AA64PFR1_SSBS_SHIFT)
+#define	ID_AA64PFR1_MTE_SHIFT		8
+#define	ID_AA64PFR1_MTE_MASK		(UL(0xf) << ID_AA64PFR1_MTE_SHIFT)
+#define	ID_AA64PFR1_MTE_VAL(x)		((x) & ID_AA64PFR1_MTE_MASK)
+#define	 ID_AA64PFR1_MTE_NONE		(UL(0x0) << ID_AA64PFR1_MTE_SHIFT)
+#define	 ID_AA64PFR1_MTE_IMPL_EL0	(UL(0x1) << ID_AA64PFR1_MTE_SHIFT)
+#define	 ID_AA64PFR1_MTE_IMPL		(UL(0x2) << ID_AA64PFR1_MTE_SHIFT)
+#define	ID_AA64PFR1_RAS_frac_SHIFT	12
+#define	ID_AA64PFR1_RAS_frac_MASK	(UL(0xf) << ID_AA64PFR1_RAS_frac_SHIFT)
+#define	ID_AA64PFR1_RAS_frac_VAL(x)	((x) & ID_AA64PFR1_RAS_frac_MASK)
+#define	 ID_AA64PFR1_RAS_frac_V1	(UL(0x0) << ID_AA64PFR1_RAS_frac_SHIFT)
+#define	 ID_AA64PFR1_RAS_frac_V2	(UL(0x1) << ID_AA64PFR1_RAS_frac_SHIFT)
 
 /* MAIR_EL1 - Memory Attribute Indirection Register */
 #define	MAIR_ATTR_MASK(idx)	(0xff << ((n)* 8))


More information about the svn-src-head mailing list