diff options
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/kernel/cpu/common.c | 8 | ||||
-rw-r--r-- | arch/x86/kernel/cpu/transmeta.c | 28 |
2 files changed, 15 insertions, 21 deletions
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index f5f25b85be95..3e2ce4d33d3a 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c | |||
@@ -465,14 +465,6 @@ static void __cpuinit get_cpu_cap(struct cpuinfo_x86 *c) | |||
465 | } | 465 | } |
466 | 466 | ||
467 | #ifdef CONFIG_X86_64 | 467 | #ifdef CONFIG_X86_64 |
468 | /* Transmeta-defined flags: level 0x80860001 */ | ||
469 | xlvl = cpuid_eax(0x80860000); | ||
470 | if ((xlvl & 0xffff0000) == 0x80860000) { | ||
471 | /* Don't set x86_cpuid_level here for now to not confuse. */ | ||
472 | if (xlvl >= 0x80860001) | ||
473 | c->x86_capability[2] = cpuid_edx(0x80860001); | ||
474 | } | ||
475 | |||
476 | if (c->extended_cpuid_level >= 0x80000008) { | 468 | if (c->extended_cpuid_level >= 0x80000008) { |
477 | u32 eax = cpuid_eax(0x80000008); | 469 | u32 eax = cpuid_eax(0x80000008); |
478 | 470 | ||
diff --git a/arch/x86/kernel/cpu/transmeta.c b/arch/x86/kernel/cpu/transmeta.c index 738e03244f95..52b3fefbd5af 100644 --- a/arch/x86/kernel/cpu/transmeta.c +++ b/arch/x86/kernel/cpu/transmeta.c | |||
@@ -5,6 +5,18 @@ | |||
5 | #include <asm/msr.h> | 5 | #include <asm/msr.h> |
6 | #include "cpu.h" | 6 | #include "cpu.h" |
7 | 7 | ||
8 | static void __cpuinit early_init_transmeta(struct cpuinfo_x86 *c) | ||
9 | { | ||
10 | u32 xlvl; | ||
11 | |||
12 | /* Transmeta-defined flags: level 0x80860001 */ | ||
13 | xlvl = cpuid_eax(0x80860000); | ||
14 | if ((xlvl & 0xffff0000) == 0x80860000) { | ||
15 | if (xlvl >= 0x80860001) | ||
16 | c->x86_capability[2] = cpuid_edx(0x80860001); | ||
17 | } | ||
18 | } | ||
19 | |||
8 | static void __cpuinit init_transmeta(struct cpuinfo_x86 *c) | 20 | static void __cpuinit init_transmeta(struct cpuinfo_x86 *c) |
9 | { | 21 | { |
10 | unsigned int cap_mask, uk, max, dummy; | 22 | unsigned int cap_mask, uk, max, dummy; |
@@ -12,6 +24,8 @@ static void __cpuinit init_transmeta(struct cpuinfo_x86 *c) | |||
12 | unsigned int cpu_rev, cpu_freq = 0, cpu_flags, new_cpu_rev; | 24 | unsigned int cpu_rev, cpu_freq = 0, cpu_flags, new_cpu_rev; |
13 | char cpu_info[65]; | 25 | char cpu_info[65]; |
14 | 26 | ||
27 | early_init_transmeta(c); | ||
28 | |||
15 | display_cacheinfo(c); | 29 | display_cacheinfo(c); |
16 | 30 | ||
17 | /* Print CMS and CPU revision */ | 31 | /* Print CMS and CPU revision */ |
@@ -84,23 +98,11 @@ static void __cpuinit init_transmeta(struct cpuinfo_x86 *c) | |||
84 | #endif | 98 | #endif |
85 | } | 99 | } |
86 | 100 | ||
87 | static void __cpuinit transmeta_identify(struct cpuinfo_x86 *c) | ||
88 | { | ||
89 | u32 xlvl; | ||
90 | |||
91 | /* Transmeta-defined flags: level 0x80860001 */ | ||
92 | xlvl = cpuid_eax(0x80860000); | ||
93 | if ((xlvl & 0xffff0000) == 0x80860000) { | ||
94 | if (xlvl >= 0x80860001) | ||
95 | c->x86_capability[2] = cpuid_edx(0x80860001); | ||
96 | } | ||
97 | } | ||
98 | |||
99 | static struct cpu_dev transmeta_cpu_dev __cpuinitdata = { | 101 | static struct cpu_dev transmeta_cpu_dev __cpuinitdata = { |
100 | .c_vendor = "Transmeta", | 102 | .c_vendor = "Transmeta", |
101 | .c_ident = { "GenuineTMx86", "TransmetaCPU" }, | 103 | .c_ident = { "GenuineTMx86", "TransmetaCPU" }, |
104 | .c_early_init = early_init_transmeta, | ||
102 | .c_init = init_transmeta, | 105 | .c_init = init_transmeta, |
103 | .c_identify = transmeta_identify, | ||
104 | .c_x86_vendor = X86_VENDOR_TRANSMETA, | 106 | .c_x86_vendor = X86_VENDOR_TRANSMETA, |
105 | }; | 107 | }; |
106 | 108 | ||