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