Module Name:    src
Committed By:   msaitoh
Date:           Thu Sep  7 06:40:42 UTC 2017

Modified Files:
        src/sys/arch/x86/include: specialreg.h
        src/sys/arch/x86/x86: cpu_topology.c identcpu.c
        src/usr.sbin/cpuctl/arch: i386.c

Log Message:
 Define CPUID Fn00000001 %ebx bits and use them. No functional change.


To generate a diff of this commit:
cvs rdiff -u -r1.101 -r1.102 src/sys/arch/x86/include/specialreg.h
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/x86/x86/cpu_topology.c
cvs rdiff -u -r1.55 -r1.56 src/sys/arch/x86/x86/identcpu.c
cvs rdiff -u -r1.74 -r1.75 src/usr.sbin/cpuctl/arch/i386.c

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/x86/include/specialreg.h
diff -u src/sys/arch/x86/include/specialreg.h:1.101 src/sys/arch/x86/include/specialreg.h:1.102
--- src/sys/arch/x86/include/specialreg.h:1.101	Fri Aug 11 06:27:12 2017
+++ src/sys/arch/x86/include/specialreg.h	Thu Sep  7 06:40:42 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: specialreg.h,v 1.101 2017/08/11 06:27:12 maxv Exp $	*/
+/*	$NetBSD: specialreg.h,v 1.102 2017/09/07 06:40:42 msaitoh Exp $	*/
 
 /*-
  * Copyright (c) 1991 The Regents of the University of California.
@@ -248,6 +248,12 @@
 		&& (CPUID_TO_BASEFAMILY(cpuid) != 0x06)		\
 		? 0 : (CPUID_TO_EXTMODEL(cpuid) << 4)))
 
+/* CPUID Fn00000001 %ebx */
+#define	CPUID_BRAND_INDEX	__BITS(7,0)
+#define	CPUID_CLFUSH_SIZE	__BITS(15,8)
+#define	CPUID_HTT_CORES		__BITS(23,16)
+#define	CPUID_LOCAL_APIC_ID	__BITS(31,24)
+
 /*
  * Intel Deterministic Cache Parameter Leaf
  * Fn0000_0004

Index: src/sys/arch/x86/x86/cpu_topology.c
diff -u src/sys/arch/x86/x86/cpu_topology.c:1.9 src/sys/arch/x86/x86/cpu_topology.c:1.10
--- src/sys/arch/x86/x86/cpu_topology.c:1.9	Sat Feb 22 17:48:08 2014
+++ src/sys/arch/x86/x86/cpu_topology.c	Thu Sep  7 06:40:42 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu_topology.c,v 1.9 2014/02/22 17:48:08 dsl Exp $	*/
+/*	$NetBSD: cpu_topology.c,v 1.10 2017/09/07 06:40:42 msaitoh Exp $	*/
 
 /*-
  * Copyright (c) 2009 Mindaugas Rasiukevicius <rmind at NetBSD org>,
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cpu_topology.c,v 1.9 2014/02/22 17:48:08 dsl Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cpu_topology.c,v 1.10 2017/09/07 06:40:42 msaitoh Exp $");
 
 #include <sys/param.h>
 #include <sys/bitops.h>
@@ -81,7 +81,7 @@ x86_cpu_topology(struct cpu_info *ci)
 	if ((ci->ci_feat_val[0] & CPUID_HTT) != 0) {
 		/* Maximum number of LPs sharing a cache (ebx[23:16]). */
 		x86_cpuid(1, descs);
-		lp_max = (descs[1] >> 16) & 0xff;
+		lp_max = __SHIFTOUT(descs[1], CPUID_HTT_CORES);
 	} else {
 		lp_max = 1;
 	}

Index: src/sys/arch/x86/x86/identcpu.c
diff -u src/sys/arch/x86/x86/identcpu.c:1.55 src/sys/arch/x86/x86/identcpu.c:1.56
--- src/sys/arch/x86/x86/identcpu.c:1.55	Tue May 23 08:48:34 2017
+++ src/sys/arch/x86/x86/identcpu.c	Thu Sep  7 06:40:42 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: identcpu.c,v 1.55 2017/05/23 08:48:34 nonaka Exp $	*/
+/*	$NetBSD: identcpu.c,v 1.56 2017/09/07 06:40:42 msaitoh Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2000, 2001, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: identcpu.c,v 1.55 2017/05/23 08:48:34 nonaka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: identcpu.c,v 1.56 2017/09/07 06:40:42 msaitoh Exp $");
 
 #include "opt_xen.h"
 
@@ -847,8 +847,9 @@ cpu_probe(struct cpu_info *ci)
 
 		/* CLFLUSH line size is next 8 bits */
 		if (ci->ci_feat_val[0] & CPUID_CFLUSH)
-			ci->ci_cflush_lsize = ((miscbytes >> 8) & 0xff) << 3;
-		ci->ci_initapicid = (miscbytes >> 24) & 0xff;
+			ci->ci_cflush_lsize
+			    = __SHIFTOUT(miscbytes, CPUID_CLFUSH_SIZE);
+		ci->ci_initapicid = __SHIFTOUT(miscbytes, CPUID_LOCAL_APIC_ID);
 	}
 
 	/*

Index: src/usr.sbin/cpuctl/arch/i386.c
diff -u src/usr.sbin/cpuctl/arch/i386.c:1.74 src/usr.sbin/cpuctl/arch/i386.c:1.75
--- src/usr.sbin/cpuctl/arch/i386.c:1.74	Tue Oct 11 04:16:28 2016
+++ src/usr.sbin/cpuctl/arch/i386.c	Thu Sep  7 06:40:42 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: i386.c,v 1.74 2016/10/11 04:16:28 msaitoh Exp $	*/
+/*	$NetBSD: i386.c,v 1.75 2017/09/07 06:40:42 msaitoh Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2000, 2001, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -57,7 +57,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: i386.c,v 1.74 2016/10/11 04:16:28 msaitoh Exp $");
+__RCSID("$NetBSD: i386.c,v 1.75 2017/09/07 06:40:42 msaitoh Exp $");
 #endif /* not lint */
 
 #include <sys/types.h>
@@ -1506,9 +1506,9 @@ cpu_probe_base_features(struct cpu_info 
 	ci->ci_model = CPUID_TO_MODEL(ci->ci_signature);
 
 	/* Brand is low order 8 bits of ebx */
-	ci->ci_brand_id = descs[1] & 0xff;
+	ci->ci_brand_id = __SHIFTOUT(descs[1], CPUID_BRAND_INDEX);
 	/* Initial local APIC ID */
-	ci->ci_initapicid = (descs[1] >> 24) & 0xff;
+	ci->ci_initapicid = __SHIFTOUT(descs[1], CPUID_LOCAL_APIC_ID);
 
 	ci->ci_feat_val[1] = descs[2];
 	ci->ci_feat_val[0] = descs[3];
@@ -1668,7 +1668,7 @@ identifycpu_cpuids(struct cpu_info *ci)
 
 	if ((ci->ci_feat_val[0] & CPUID_HTT) != 0) {
 		x86_cpuid(1, descs);
-		lp_max = (descs[1] >> 16) & 0xff;
+		lp_max = __SHIFTOUT(descs[1], CPUID_HTT_CORES);
 	}
 	if (ci->ci_cpuid_level >= 4) {
 		x86_cpuid2(4, 0, descs);

Reply via email to