summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/uname.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/uname.cc')
-rw-r--r--winsup/cygwin/uname.cc22
1 files changed, 16 insertions, 6 deletions
diff --git a/winsup/cygwin/uname.cc b/winsup/cygwin/uname.cc
index b73dc970f..80bd31991 100644
--- a/winsup/cygwin/uname.cc
+++ b/winsup/cygwin/uname.cc
@@ -57,13 +57,23 @@ uname (struct utsname *name)
{
case PROCESSOR_ARCHITECTURE_INTEL:
unsigned int ptype;
- if (sysinfo.dwProcessorType < 3) /* Shouldn't happen. */
- ptype = 3;
- else if (sysinfo.dwProcessorType > 9) /* P4 */
- ptype = 6;
+ if (wincap.has_valid_processorlevel ())
+ {
+ if (sysinfo.wProcessorLevel < 3) /* Shouldn't happen. */
+ ptype = 3;
+ else if (sysinfo.wProcessorLevel > 9) /* P4 */
+ ptype = 6;
+ else
+ ptype = sysinfo.wProcessorLevel;
+ }
else
- ptype = sysinfo.dwProcessorType;
-
+ {
+ if (sysinfo.dwProcessorType == PROCESSOR_INTEL_386 ||
+ sysinfo.dwProcessorType == PROCESSOR_INTEL_486)
+ ptype = sysinfo.dwProcessorType / 100;
+ else
+ ptype = PROCESSOR_INTEL_PENTIUM / 100;
+ }
__small_sprintf (name->machine, "i%d86", ptype);
break;
case PROCESSOR_ARCHITECTURE_ALPHA: