summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/uname.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2001-10-15 09:41:18 +0000
committerCorinna Vinschen <corinna@vinschen.de>2001-10-15 09:41:18 +0000
commit271a33443c6e9ce77eb1a06d8726c692da85ab16 (patch)
tree5d767490465fc8669042b16e899ffb1aca6163e2 /winsup/cygwin/uname.cc
parent48372ea6f139576feaccd942d7674d06abd3c396 (diff)
downloadcygnal-271a33443c6e9ce77eb1a06d8726c692da85ab16.tar.gz
cygnal-271a33443c6e9ce77eb1a06d8726c692da85ab16.tar.bz2
cygnal-271a33443c6e9ce77eb1a06d8726c692da85ab16.zip
* 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.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: