blob: f5d10e8d9cc6df89e10aa2e7fa5b89a9acc3c480 [file] [log] [blame]
/*
* What processor?
*
* Copyright 1995 Morten Welinder
*/
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include "windows.h"
int runtime_cpu (void)
{
#ifndef __i386__
return 5; /* Might as well pretend to be a Pentium... */
#else /* __i386__ */
static int cache = 0;
#ifdef linux
if (!cache)
{
FILE *f = fopen ("/proc/cpuinfo", "r");
cache = 3; /* Default. */
if (f)
{
char info[5], value[5];
while (fscanf (f, " %4s%*s : %4s%*s", info, value) == 2)
if (!lstrcmpi32A(info, "cpu"))
{
if (isdigit (value[0]) && value[1] == '8'
&& value[2] == '6' && value[3] == 0)
{
cache = value[0] - '0';
break;
}
}
fclose (f);
}
}
return cache;
#endif /* linux */
/* FIXME: how do we do this on other systems? */
return 3;
#endif /* __i386__ */
}