diff options
Diffstat (limited to 'winsup/cygwin/uname.cc')
-rw-r--r-- | winsup/cygwin/uname.cc | 22 |
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: |