Author: dcoakley
Date: 2010-10-04 13:46:27 -0400 (Mon, 04 Oct 2010)
New Revision: 3365
Modified:
trunk/osprey/driver/opt_actions.c
Log:
Use the family number to classify AMD processors in get_auto_cpu_name().
The model names in /proc/cpuinfo are based on marketing names which are
reused for multiple generations.
Approved by: Jian-Xin Lai
Modified: trunk/osprey/driver/opt_actions.c
===================================================================
--- trunk/osprey/driver/opt_actions.c 2010-09-28 06:37:42 UTC (rev 3364)
+++ trunk/osprey/driver/opt_actions.c 2010-10-04 17:46:27 UTC (rev 3365)
@@ -1999,59 +1999,54 @@
// If /proc/cpuinfo doesn't have a supported model name, try to derive one
// from the family and model numbers. If that fails, fall back to a default.
// Bug 5785.
- if (cpu_name == NULL ||
- // need to differentiate Core-based Xeon's
- !strcmp(cpu_name, "xeon")) {
- char *abi_name;
- if (intel == TRUE) {
- switch (cpu_family) {
- case 4: // most 80486s
- case 5: // Intel P5, P54C, P55C, P24T
- return "i386";
+ // need to differentiate Core-based Xeon's
+ if (intel == TRUE && (cpu_name == NULL || !strcmp(cpu_name, "xeon"))) {
+ switch (cpu_family) {
+ case 4: // most 80486s
+ case 5: // Intel P5, P54C, P55C, P24T
+ return "i386";
- case 6: // P6, Core, ...
- if (model == 7 || // Harpertown bug 14685
- model == 23 || // Wolfdale
- model == 26) // Nehalem
- return "wolfdale";
+ case 6: // P6, Core, ...
+ if (model == 7 || // Harpertown bug 14685
+ model == 23 || // Wolfdale
+ model == 26) // Nehalem
+ return "wolfdale";
- if (model >= 15)
- return "core";
+ if (model >= 15)
+ return "core";
- // Treat the rest of the P6 family as generic x86 since we don't
- // optimize for them.
- return "i386";
+ // Treat the rest of the P6 family as generic x86 since we don't
+ // optimize for them.
+ return "i386";
- case 15: // P4
- cpu_name = "xeon";
- cpu_name_64bit = "em64t";
- break;
- }
-
- } else if (amd == TRUE) {
- switch (cpu_family) {
- case 4: // 5x86
- case 5: // K5, K6
- case 6: // K7
- return "athlon";
- case 15: // Opteron, Athlon64
- return "opteron";
- case 16:
- return "barcelona"; // Barcelona
- case 21:
- return "orochi"; // Orochi
- }
+ case 15: // P4
+ cpu_name = "xeon";
+ cpu_name_64bit = "em64t";
+ break;
}
- if (cpu_name == NULL) {
- return get_default_cpu_name("cannot deduce a supported CPU name"
- " from /proc/cpuinfo");
+ } else if (amd == TRUE) {
+ switch (cpu_family) {
+ case 4: // 5x86
+ case 5: // K5, K6
+ case 6: // K7
+ return "athlon";
+ case 15:
+ return "opteron"; // Family 0fh (K8)
+ case 16:
+ return "barcelona"; // Family 10h
+ case 17:
+ case 18:
+ case 20:
+ return "opteron"; // Generic tuning for Family 11h, 12h, 14h
+ case 21:
+ return "bdver1"; // Family 15h
}
}
if (cpu_name == NULL) {
- error("cpu_name NULL");
- return NULL;
+ return get_default_cpu_name("cannot deduce a supported CPU name"
+ " from /proc/cpuinfo");
}
// If cpuinfo doesn't say if CPU is 32 or 64-bit, ask the OS.
------------------------------------------------------------------------------
Virtualization is moving to the mainstream and overtaking non-virtualized
environment for deploying applications. Does it make network security
easier or more difficult to achieve? Read this whitepaper to separate the
two and get a better understanding.
http://p.sf.net/sfu/hp-phase2-d2d
_______________________________________________
Open64-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/open64-devel