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);