extern void get_cpu_vendor(struct cpuinfo_x86*); 
static int __init detect_init_APIC (void){	u32 h, l, features;	extern void get_cpu_vendor(struct cpuinfo_x86*);	/* Disabled by kernel option? */	if (enable_local_apic < 0)		return -1;	/* Workaround for us being called before identify_cpu(). */	get_cpu_vendor(&boot_cpu_data);	switch (boot_cpu_data.x86_vendor) {	case X86_VENDOR_AMD:		if ((boot_cpu_data.x86 == 6 && boot_cpu_data.x86_model > 1) ||		    (boot_cpu_data.x86 == 15))	    			break;		goto no_apic;	case X86_VENDOR_INTEL:		if (boot_cpu_data.x86 == 6 || boot_cpu_data.x86 == 15 ||		    (boot_cpu_data.x86 == 5 && cpu_has_apic))			break;		goto no_apic;	default:		goto no_apic;	}	if (!cpu_has_apic) {		/*		 * Over-ride BIOS and try to enable the local		 * APIC only if "lapic" specified.		 */		if (enable_local_apic <= 0) {			printk("Local APIC disabled by BIOS -- "			       "you can enable it with \"lapic\"\n");			return -1;		}		/*		 * Some BIOSes disable the local APIC in the		 * APIC_BASE MSR. This can only be done in		 * software for Intel P6 or later and AMD K7		 * (Model > 1) or later.		 */		rdmsr(MSR_IA32_APICBASE, l, h);		if (!(l & MSR_IA32_APICBASE_ENABLE)) {			printk("Local APIC disabled by BIOS -- reenabling.\n");			l &= ~MSR_IA32_APICBASE_BASE;			l |= MSR_IA32_APICBASE_ENABLE | APIC_DEFAULT_PHYS_BASE;			wrmsr(MSR_IA32_APICBASE, l, h);			enabled_via_apicbase = 1;		}	}	/*	 * The APIC feature bit should now be enabled	 * in `cpuid'	 */	features = cpuid_edx(1);	if (!(features & (1 << X86_FEATURE_APIC))) {		printk("Could not enable APIC!\n");		return -1;	}	set_bit(X86_FEATURE_APIC, boot_cpu_data.x86_capability);	mp_lapic_addr = APIC_DEFAULT_PHYS_BASE;	/* The BIOS may have set up the APIC at some other address */	rdmsr(MSR_IA32_APICBASE, l, h);	if (l & MSR_IA32_APICBASE_ENABLE)		mp_lapic_addr = l & MSR_IA32_APICBASE_BASE;	if (nmi_watchdog != NMI_NONE)		nmi_watchdog = NMI_LOCAL_APIC;	printk("Found and enabled local APIC!\n");	apic_pm_activate();	return 0;no_apic:	printk("No local APIC present or hardware disabled\n");	return -1;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/6be382ea0c767a81be0e7980400b9b18167b3261/apic.c/buggy/arch/i386/kernel/apic.c