local_irq_enable();  __hlt(); 
safe_halt(); 
static void longhaul_setstate(unsigned int clock_ratio_index){	int speed, mult;	struct cpufreq_freqs freqs;	union msr_longhaul longhaul;	union msr_bcr2 bcr2;	static unsigned int old_ratio=-1;	if (old_ratio == clock_ratio_index)		return;	old_ratio = clock_ratio_index;	mult = clock_ratio[clock_ratio_index];	if (mult == -1)		return;	speed = calc_speed(mult);	if ((speed > highest_speed) || (speed < lowest_speed))		return;	freqs.old = calc_speed(longhaul_get_cpu_mult());	freqs.new = speed;	freqs.cpu = 0; /* longhaul.c is UP only driver */	cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);	dprintk ("Setting to FSB:%dMHz Mult:%d.%dx (%s)\n",			fsb, mult/10, mult%10, print_speed(speed/1000));	switch (longhaul_version) {	/*	 * Longhaul v1. (Samuel[C5A] and Samuel2 stepping 0[C5B])	 * Software controlled multipliers only.	 *	 * *NB* Until we get voltage scaling working v1 & v2 are the same code.	 * Longhaul v2 appears in Samuel2 Steppings 1->7 [C5b] and Ezra [C5C]	 */	case TYPE_LONGHAUL_V1:	case TYPE_LONGHAUL_V2:		rdmsrl (MSR_VIA_BCR2, bcr2.val);		/* Enable software clock multiplier */		bcr2.bits.ESOFTBF = 1;		bcr2.bits.CLOCKMUL = clock_ratio_index;		local_irq_disable();		wrmsrl (MSR_VIA_BCR2, bcr2.val);		local_irq_enable();		__hlt();		/* Disable software clock multiplier */		rdmsrl (MSR_VIA_BCR2, bcr2.val);		bcr2.bits.ESOFTBF = 0;		local_irq_disable();		wrmsrl (MSR_VIA_BCR2, bcr2.val);		local_irq_enable();		break;	/*	 * Longhaul v3 (aka Powersaver). (Ezra-T [C5M] & Nehemiah [C5N])	 * We can scale voltage with this too, but that's currently	 * disabled until we come up with a decent 'match freq to voltage'	 * algorithm.	 * When we add voltage scaling, we will also need to do the	 * voltage/freq setting in order depending on the direction	 * of scaling (like we do in powernow-k7.c)	 * Nehemiah can do FSB scaling too, but this has never been proven	 * to work in practice.	 */	case TYPE_POWERSAVER:		do_powersaver(&longhaul, clock_ratio_index);		break;	}	cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/4bb0d3ec3e5b1e9e2399cdc641b3b6521ac9cdaa/longhaul.c/buggy/arch/i386/kernel/cpu/cpufreq/longhaul.c