0001
0002 #include <linux/types.h>
0003 #include <linux/export.h>
0004 #include <asm/cpu.h>
0005
0006 unsigned int x86_family(unsigned int sig)
0007 {
0008 unsigned int x86;
0009
0010 x86 = (sig >> 8) & 0xf;
0011
0012 if (x86 == 0xf)
0013 x86 += (sig >> 20) & 0xff;
0014
0015 return x86;
0016 }
0017 EXPORT_SYMBOL_GPL(x86_family);
0018
0019 unsigned int x86_model(unsigned int sig)
0020 {
0021 unsigned int fam, model;
0022
0023 fam = x86_family(sig);
0024
0025 model = (sig >> 4) & 0xf;
0026
0027 if (fam >= 0x6)
0028 model += ((sig >> 16) & 0xf) << 4;
0029
0030 return model;
0031 }
0032 EXPORT_SYMBOL_GPL(x86_model);
0033
0034 unsigned int x86_stepping(unsigned int sig)
0035 {
0036 return sig & 0xf;
0037 }
0038 EXPORT_SYMBOL_GPL(x86_stepping);