Messages in this thread | | | Date | Fri, 23 May 2008 15:16:36 +0200 | From | Pavel Machek <> | Subject | Re: [X86] Move the AMD64 specific parts out of setup_64.c |
| |
Hi!
> Create a separate amd_64.c file in the cpu/ dir for > the useful parts to live in. >
> +#define ENABLE_C1E_MASK 0x18000000 > +#define CPUID_PROCESSOR_SIGNATURE 1 > +#define CPUID_XFAM 0x0ff00000 > +#define CPUID_XFAM_K8 0x00000000 > +#define CPUID_XFAM_10H 0x00100000 > +#define CPUID_XFAM_11H 0x00200000 > +#define CPUID_XMOD 0x000f0000 > +#define CPUID_XMOD_REV_F 0x00040000 > + > +/* AMD systems with C1E don't have a working lAPIC timer. Check for that. */ > +static __cpuinit int amd_apic_timer_broken(void) > +{ > + u32 lo, hi, eax = cpuid_eax(CPUID_PROCESSOR_SIGNATURE); > + > + switch (eax & CPUID_XFAM) { > + case CPUID_XFAM_K8: > + if ((eax & CPUID_XMOD) < CPUID_XMOD_REV_F) > + break; > + case CPUID_XFAM_10H: > + case CPUID_XFAM_11H: > + rdmsr(MSR_K8_ENABLE_C1E, lo, hi); > + if (lo & ENABLE_C1E_MASK) > + return 1; > + break; > + default: > + /* err on the side of caution */ > + return 1; > + } > + return 0; > +}
This needs to be done in 32-bit kernel, too, right?
-- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
| |