Re: [X86] Move the 64-bit Centaur specific parts out of setup_64.c

From: Pavel Machek
Date: Fri May 23 2008 - 09:20:57 EST


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@xxxxxxxxxx>
> ---
> 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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/