Module Name:    src
Committed By:   riastradh
Date:           Sun Jun 14 16:10:18 UTC 2020

Modified Files:
        src/sys/arch/aarch64/aarch64: cpu.c
        src/sys/arch/aarch64/include: armreg.h

Log Message:
Add some more id_aa64pfr0_el1 bits.


To generate a diff of this commit:
cvs rdiff -u -r1.46 -r1.47 src/sys/arch/aarch64/aarch64/cpu.c
cvs rdiff -u -r1.48 -r1.49 src/sys/arch/aarch64/include/armreg.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/aarch64/aarch64/cpu.c
diff -u src/sys/arch/aarch64/aarch64/cpu.c:1.46 src/sys/arch/aarch64/aarch64/cpu.c:1.47
--- src/sys/arch/aarch64/aarch64/cpu.c:1.46	Sat May 30 17:50:39 2020
+++ src/sys/arch/aarch64/aarch64/cpu.c	Sun Jun 14 16:10:18 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu.c,v 1.46 2020/05/30 17:50:39 jmcneill Exp $ */
+/* $NetBSD: cpu.c,v 1.47 2020/06/14 16:10:18 riastradh Exp $ */
 
 /*
  * Copyright (c) 2017 Ryo Shimizu <r...@nerv.org>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.46 2020/05/30 17:50:39 jmcneill Exp $");
+__KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.47 2020/06/14 16:10:18 riastradh Exp $");
 
 #include "locators.h"
 #include "opt_arm_debug.h"
@@ -343,6 +343,16 @@ cpu_identify2(device_t self, struct cpu_
 	aprint_verbose_dev(self, "auxID=0x%" PRIx64, ci->ci_id.ac_aa64isar0);
 
 	/* PFR0 */
+	switch (__SHIFTOUT(id->ac_aa64pfr0, ID_AA64PFR0_EL1_CSV3)) {
+	case ID_AA64PFR0_EL1_CSV3_IMPL:
+		aprint_verbose(", CSV3");
+		break;
+	}
+	switch (__SHIFTOUT(id->ac_aa64pfr0, ID_AA64PFR0_EL1_CSV2)) {
+	case ID_AA64PFR0_EL1_CSV2_IMPL:
+		aprint_verbose(", CSV2");
+		break;
+	}
 	switch (__SHIFTOUT(id->ac_aa64pfr0, ID_AA64PFR0_EL1_GIC)) {
 	case ID_AA64PFR0_EL1_GIC_CPUIF_EN:
 		aprint_verbose(", GICv3");
@@ -384,6 +394,12 @@ cpu_identify2(device_t self, struct cpu_
 		break;
 	}
 
+	/* PFR0:DIT -- data-independent timing support */
+	switch (__SHIFTOUT(id->ac_aa64pfr0, ID_AA64PFR0_EL1_DIT)) {
+	case ID_AA64PFR0_EL1_DIT_IMPL:
+		aprint_verbose(", DIT");
+		break;
+	}
 
 	/* PFR0:AdvSIMD */
 	switch (__SHIFTOUT(id->ac_aa64pfr0, ID_AA64PFR0_EL1_ADVSIMD)) {

Index: src/sys/arch/aarch64/include/armreg.h
diff -u src/sys/arch/aarch64/include/armreg.h:1.48 src/sys/arch/aarch64/include/armreg.h:1.49
--- src/sys/arch/aarch64/include/armreg.h:1.48	Thu May 28 12:41:15 2020
+++ src/sys/arch/aarch64/include/armreg.h	Sun Jun 14 16:10:18 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: armreg.h,v 1.48 2020/05/28 12:41:15 skrll Exp $ */
+/* $NetBSD: armreg.h,v 1.49 2020/06/14 16:10:18 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -1305,6 +1305,26 @@ AARCH64REG_WRITE_INLINE(cntvct_el0)
 #define	CNTCTL_ENABLE		__BIT(0)	// Timer Enabled
 
 // ID_AA64PFR0_EL1: AArch64 Processor Feature Register 0
+#define	ID_AA64PFR0_EL1_CSV3		__BITS(63,60) // Speculative fault data
+#define	 ID_AA64PFR0_EL1_CSV3_NONE	0
+#define	 ID_AA64PFR0_EL1_CSV3_IMPL	1
+#define	ID_AA64PFR0_EL1_CSV2		__BITS(59,56) // Speculative branches
+#define	 ID_AA64PFR0_EL1_CSV2_NONE	0
+#define	 ID_AA64PFR0_EL1_CSV2_IMPL	1
+// reserved [55:52]
+#define	ID_AA64PFR0_EL1_DIT		__BITS(51,48) // Data-indep. timing
+#define	 ID_AA64PFR0_EL1_DIT_NONE	0
+#define	 ID_AA64PFR0_EL1_DIT_IMPL	1
+#define	ID_AA64PFR0_EL1_AMU		__BITS(47,44) // Activity monitors ext.
+#define	 ID_AA64PFR0_EL1_AMU_NONE	0
+#define	 ID_AA64PFR0_EL1_AMU_IMPLv8_4	1
+#define	 ID_AA64PFR0_EL1_AMU_IMPLv8_6	2
+#define	ID_AA64PFR0_EL1_MPAM		__BITS(43,40) // MPAM Extension
+#define	 ID_AA64PFR0_EL1_MPAM_NONE	0
+#define	 ID_AA64PFR0_EL1_MPAM_IMPL	1
+#define	ID_AA64PFR0_EL1_SEL2		__BITS(43,40) // Secure EL2
+#define	 ID_AA64PFR0_EL1_SEL2_NONE	0
+#define	 ID_AA64PFR0_EL1_SEL2_IMPL	1
 #define	ID_AA64PFR0_EL1_SVE		__BITS(35,32) // Scalable Vector
 #define	 ID_AA64PFR0_EL1_SVE_NONE	 0
 #define	 ID_AA64PFR0_EL1_SVE_IMPL	 1

Reply via email to