Module Name: src Committed By: msaitoh Date: Mon Dec 23 10:13:59 UTC 2013
Modified Files: src/usr.sbin/cpuctl/arch: i386.c Log Message: Add comments. Remove comments. No functional change. To generate a diff of this commit: cvs rdiff -u -r1.50 -r1.51 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/usr.sbin/cpuctl/arch/i386.c diff -u src/usr.sbin/cpuctl/arch/i386.c:1.50 src/usr.sbin/cpuctl/arch/i386.c:1.51 --- src/usr.sbin/cpuctl/arch/i386.c:1.50 Fri Nov 15 08:47:55 2013 +++ src/usr.sbin/cpuctl/arch/i386.c Mon Dec 23 10:13:59 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: i386.c,v 1.50 2013/11/15 08:47:55 msaitoh Exp $ */ +/* $NetBSD: i386.c,v 1.51 2013/12/23 10:13:59 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.50 2013/11/15 08:47:55 msaitoh Exp $"); +__RCSID("$NetBSD: i386.c,v 1.51 2013/12/23 10:13:59 msaitoh Exp $"); #endif /* not lint */ #include <sys/types.h> @@ -200,7 +200,7 @@ static int use_pae, largepagesize; /* Setup functions */ static void disable_tsc(struct cpu_info *); -static void amd_family5_setup(struct cpu_info *); /* alike cpu_probe_k5 */ +static void amd_family5_setup(struct cpu_info *); static void cyrix6x86_cpu_setup(struct cpu_info *); static void winchip_cpu_setup(struct cpu_info *); /* Brand/Model name functions */ @@ -212,22 +212,20 @@ static void powernow_probe(struct cpu_in static void intel_family_new_probe(struct cpu_info *); static void via_cpu_probe(struct cpu_info *); /* (Cache) Info functions */ -static void amd_cpu_cacheinfo(struct cpu_info *); /* alike */ +static void amd_cpu_cacheinfo(struct cpu_info *); static void via_cpu_cacheinfo(struct cpu_info *); static void tmx86_get_longrun_status(u_int *, u_int *, u_int *); static void transmeta_cpu_info(struct cpu_info *); /* Common functions */ static void cpu_probe_base_features(struct cpu_info *, const char *); - /* alike cpu_probe() */ static void cpu_probe_features(struct cpu_info *); static void print_bits(const char *, const char *, const char *, uint32_t); -/* XXX identifycpu alike cpu_identify */ static void identifycpu_cpuids(struct cpu_info *); static const char *print_cache_config(struct cpu_info *, int, const char *, const char *); static const char *print_tlb_config(struct cpu_info *, int, const char *, const char *); -static const struct x86_cache_info *cache_info_lookup( /* XXX same */ +static const struct x86_cache_info *cache_info_lookup( const struct x86_cache_info *, uint8_t); static void x86_print_cacheinfo(struct cpu_info *); @@ -1324,13 +1322,28 @@ cpu_probe_base_features(struct cpu_info return; } + /* + * This CPU supports cpuid instruction, so we can call x86_cpuid() + * function. + */ + + /* + * Fn0000_0000: + * - Save cpuid max level. + * - Save vendor string. + */ x86_cpuid(0, descs); ci->ci_cpuid_level = descs[0]; + /* Save vendor string */ ci->ci_vendor[0] = descs[1]; ci->ci_vendor[2] = descs[2]; ci->ci_vendor[1] = descs[3]; ci->ci_vendor[3] = 0; + /* + * Fn8000_000[2-4]: + * - Save brand string. + */ x86_cpuid(0x80000000, brand); if (brand[0] >= 0x80000004) { x86_cpuid(0x80000002, brand); @@ -1345,6 +1358,11 @@ cpu_probe_base_features(struct cpu_info if (ci->ci_cpuid_level < 1) return; + /* + * Fn0000_0001: + * - Get CPU family, model and stepping (from eax). + * - Initial local APIC ID and brand ID (from ebx) + */ x86_cpuid(1, descs); ci->ci_signature = descs[0]; @@ -1354,6 +1372,7 @@ cpu_probe_base_features(struct cpu_info /* Brand is low order 8 bits of ebx */ ci->ci_brand_id = descs[1] & 0xff; + /* Initial local APIC ID */ ci->ci_initapicid = (descs[1] >> 24) & 0xff; ci->ci_feat_val[1] = descs[2]; @@ -1599,6 +1618,7 @@ identifycpu(int fd, const char *cpuname) cpu_probe_features(ci); if (ci->ci_cpu_type >= 0) { + /* Old pre-cpuid instruction cpu */ if (ci->ci_cpu_type >= (int)__arraycount(i386_nocpuid_cpus)) errx(1, "unknown cpu type %d", ci->ci_cpu_type); name = i386_nocpuid_cpus[ci->ci_cpu_type].cpu_name; @@ -1608,6 +1628,7 @@ identifycpu(int fd, const char *cpuname) ci->ci_info = i386_nocpuid_cpus[ci->ci_cpu_type].cpu_info; modifier = ""; } else { + /* CPU which support cpuid instruction */ modif = (ci->ci_signature >> 12) & 0x3; family = ci->ci_family; if (family < CPU_MINFAMILY)