Messages in this thread | | | Date | Fri, 23 May 2008 15:13:05 +0200 | From | Pavel Machek <> | Subject | Re: [X86] Move the 64-bit Centaur specific parts out of setup_64.c |
| |
Hi!
> Create a separate centaur_64.c file in the cpu/ dir for > the useful parts to live in. > > Signed-off-by: Dave Jones <davej@redhat.com> > --- > arch/x86/kernel/cpu/Makefile | 1 + > arch/x86/kernel/cpu/centaur_64.c | 28 ++++++++++++++++++++++++++++ > arch/x86/kernel/setup_64.c | 29 ++--------------------------- > 3 files changed, 31 insertions(+), 27 deletions(-) > create mode 100644 arch/x86/kernel/cpu/centaur_64.c > > diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile > index b7a1192..c77a1c5 100644 > --- a/arch/x86/kernel/cpu/Makefile > +++ b/arch/x86/kernel/cpu/Makefile > @@ -10,6 +10,7 @@ obj-$(CONFIG_X86_32) += amd.o > obj-$(CONFIG_X86_64) += amd_64.o > obj-$(CONFIG_X86_32) += cyrix.o > obj-$(CONFIG_X86_32) += centaur.o > +obj-$(CONFIG_X86_64) += centaur_64.o > obj-$(CONFIG_X86_32) += transmeta.o > obj-$(CONFIG_X86_32) += intel.o > obj-$(CONFIG_X86_64) += intel_64.o > diff --git a/arch/x86/kernel/cpu/centaur_64.c b/arch/x86/kernel/cpu/centaur_64.c > new file mode 100644 > index 0000000..08e07b5 > --- /dev/null > +++ b/arch/x86/kernel/cpu/centaur_64.c > @@ -0,0 +1,28 @@ > +#include <linux/init.h> > +#include <linux/smp.h> > + > +void __cpuinit early_init_centaur(struct cpuinfo_x86 *c) > +{ > + if (c->x86 == 0x6 && c->x86_model >= 0xf) > + set_bit(X86_FEATURE_CONSTANT_TSC, &c->x86_capability); > +} > + > +void __cpuinit init_centaur(struct cpuinfo_x86 *c) > +{ > + /* Cache sizes */ > + unsigned n; > + > + n = c->extended_cpuid_level; > + if (n >= 0x80000008) { > + unsigned eax = cpuid_eax(0x80000008); > + c->x86_virt_bits = (eax >> 8) & 0xff; > + c->x86_phys_bits = eax & 0xff; > + } > + > + if (c->x86 == 0x6 && c->x86_model >= 0xf) { > + c->x86_cache_alignment = c->x86_clflush_size * 2; > + set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC); > + set_cpu_cap(c, X86_FEATURE_REP_GOOD); > + } > + set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC); > +} > diff --git a/arch/x86/kernel/setup_64.c b/arch/x86/kernel/setup_64.c > index b3d25d6..9159f85 100644 > --- a/arch/x86/kernel/setup_64.c > +++ b/arch/x86/kernel/setup_64.c > @@ -614,33 +614,6 @@ out: > #endif > } > > - > -static void __cpuinit early_init_centaur(struct cpuinfo_x86 *c) > -{ > - if (c->x86 == 0x6 && c->x86_model >= 0xf) > - set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC); > -} > - > -static void __cpuinit init_centaur(struct cpuinfo_x86 *c) > -{ > - /* Cache sizes */ > - unsigned n; > - > - n = c->extended_cpuid_level; > - if (n >= 0x80000008) { > - unsigned eax = cpuid_eax(0x80000008); > - c->x86_virt_bits = (eax >> 8) & 0xff; > - c->x86_phys_bits = eax & 0xff; > - } > - > - if (c->x86 == 0x6 && c->x86_model >= 0xf) { > - c->x86_cache_alignment = c->x86_clflush_size * 2; > - set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC); > - set_cpu_cap(c, X86_FEATURE_REP_GOOD); > - } > - set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC); > -} > - > static void __cpuinit get_cpu_vendor(struct cpuinfo_x86 *c)
Are there 64-bit capable centaurs? Wow... Pavel
-- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
| |