aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/kernel/cpu/common.c8
-rw-r--r--arch/x86/kernel/cpu/transmeta.c28
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
8static 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
8static void __cpuinit init_transmeta(struct cpuinfo_x86 *c) 20static 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
87static 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
99static struct cpu_dev transmeta_cpu_dev __cpuinitdata = { 101static 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