Revision c6fa82c4
b/target-i386/helper.c | ||
---|---|---|
32 | 32 |
|
33 | 33 |
//#define DEBUG_MMU |
34 | 34 |
|
35 |
/* feature flags taken from "Intel Processor Identification and the CPUID |
|
36 |
* Instruction" and AMD's "CPUID Specification". In cases of disagreement |
|
37 |
* about feature names, the Linux name is used. */ |
|
38 |
static const char *feature_name[] = { |
|
39 |
"fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce", |
|
40 |
"cx8", "apic", NULL, "sep", "mtrr", "pge", "mca", "cmov", |
|
41 |
"pat", "pse36", "pn" /* Intel psn */, "clflush" /* Intel clfsh */, NULL, "ds" /* Intel dts */, "acpi", "mmx", |
|
42 |
"fxsr", "sse", "sse2", "ss", "ht" /* Intel htt */, "tm", "ia64", "pbe", |
|
43 |
}; |
|
44 |
static const char *ext_feature_name[] = { |
|
45 |
"pni" /* Intel,AMD sse3 */, NULL, NULL, "monitor", "ds_cpl", "vmx", NULL /* Linux smx */, "est", |
|
46 |
"tm2", "ssse3", "cid", NULL, NULL, "cx16", "xtpr", NULL, |
|
47 |
NULL, NULL, "dca", NULL, NULL, NULL, NULL, "popcnt", |
|
48 |
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, |
|
49 |
}; |
|
50 |
static const char *ext2_feature_name[] = { |
|
51 |
"fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce", |
|
52 |
"cx8" /* AMD CMPXCHG8B */, "apic", NULL, "syscall", "mtrr", "pge", "mca", "cmov", |
|
53 |
"pat", "pse36", NULL, NULL /* Linux mp */, "nx" /* Intel xd */, NULL, "mmxext", "mmx", |
|
54 |
"fxsr", "fxsr_opt" /* AMD ffxsr */, "pdpe1gb" /* AMD Page1GB */, "rdtscp", NULL, "lm" /* Intel 64 */, "3dnowext", "3dnow", |
|
55 |
}; |
|
56 |
static const char *ext3_feature_name[] = { |
|
57 |
"lahf_lm" /* AMD LahfSahf */, "cmp_legacy", "svm", "extapic" /* AMD ExtApicSpace */, "cr8legacy" /* AMD AltMovCr8 */, "abm", "sse4a", "misalignsse", |
|
58 |
"3dnowprefetch", "osvw", NULL /* Linux ibs */, NULL, "skinit", "wdt", NULL, NULL, |
|
59 |
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, |
|
60 |
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, |
|
61 |
}; |
|
62 |
|
|
35 | 63 |
static void add_flagname_to_bitmaps(char *flagname, uint32_t *features, |
36 | 64 |
uint32_t *ext_features, |
37 | 65 |
uint32_t *ext2_features, |
38 | 66 |
uint32_t *ext3_features) |
39 | 67 |
{ |
40 | 68 |
int i; |
41 |
/* feature flags taken from "Intel Processor Identification and the CPUID |
|
42 |
* Instruction" and AMD's "CPUID Specification". In cases of disagreement |
|
43 |
* about feature names, the Linux name is used. */ |
|
44 |
static const char *feature_name[] = { |
|
45 |
"fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce", |
|
46 |
"cx8", "apic", NULL, "sep", "mtrr", "pge", "mca", "cmov", |
|
47 |
"pat", "pse36", "pn" /* Intel psn */, "clflush" /* Intel clfsh */, NULL, "ds" /* Intel dts */, "acpi", "mmx", |
|
48 |
"fxsr", "sse", "sse2", "ss", "ht" /* Intel htt */, "tm", "ia64", "pbe", |
|
49 |
}; |
|
50 |
static const char *ext_feature_name[] = { |
|
51 |
"pni" /* Intel,AMD sse3 */, NULL, NULL, "monitor", "ds_cpl", "vmx", NULL /* Linux smx */, "est", |
|
52 |
"tm2", "ssse3", "cid", NULL, NULL, "cx16", "xtpr", NULL, |
|
53 |
NULL, NULL, "dca", NULL, NULL, NULL, NULL, "popcnt", |
|
54 |
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, |
|
55 |
}; |
|
56 |
static const char *ext2_feature_name[] = { |
|
57 |
"fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce", |
|
58 |
"cx8" /* AMD CMPXCHG8B */, "apic", NULL, "syscall", "mtrr", "pge", "mca", "cmov", |
|
59 |
"pat", "pse36", NULL, NULL /* Linux mp */, "nx" /* Intel xd */, NULL, "mmxext", "mmx", |
|
60 |
"fxsr", "fxsr_opt" /* AMD ffxsr */, "pdpe1gb" /* AMD Page1GB */, "rdtscp", NULL, "lm" /* Intel 64 */, "3dnowext", "3dnow", |
|
61 |
}; |
|
62 |
static const char *ext3_feature_name[] = { |
|
63 |
"lahf_lm" /* AMD LahfSahf */, "cmp_legacy", "svm", "extapic" /* AMD ExtApicSpace */, "cr8legacy" /* AMD AltMovCr8 */, "abm", "sse4a", "misalignsse", |
|
64 |
"3dnowprefetch", "osvw", NULL /* Linux ibs */, NULL, "skinit", "wdt", NULL, NULL, |
|
65 |
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, |
|
66 |
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, |
|
67 |
}; |
|
68 | 69 |
|
69 | 70 |
for ( i = 0 ; i < 32 ; i++ ) |
70 | 71 |
if (feature_name[i] && !strcmp (flagname, feature_name[i])) { |
Also available in: Unified diff