diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2001-10-15 13:41:18 +0400 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2001-10-15 13:41:18 +0400 |
commit | 271a33443c6e9ce77eb1a06d8726c692da85ab16 (patch) | |
tree | 5d767490465fc8669042b16e899ffb1aca6163e2 /winsup/cygwin/uname.cc | |
parent | 48372ea6f139576feaccd942d7674d06abd3c396 (diff) |
* uname.cc (uname): Use `wProcessorLevel' unless OS sets it wrong.
Use `dwProcessorType' then instead.
* wincap.cc: Set flag has_valid_processorlevel appropriately.
* wincap.h: Add flag has_valid_processorlevel.
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: |