/* set this only when cpu_has_tsc */ timer_hpet.read_timer = read_timer_tsc; 
static int __init init_hpet(char* override){	unsigned long result, remain;	/* check clock override */	if (override[0] && strncmp(override,"hpet",4))		return -ENODEV;	if (!is_hpet_enabled())		return -ENODEV;	printk("Using HPET for gettimeofday\n");	if (cpu_has_tsc) {		unsigned long tsc_quotient = calibrate_tsc_hpet(&tsc_hpet_quotient);		if (tsc_quotient) {			/* report CPU clock rate in Hz.			 * The formula is (10^6 * 2^32) / (2^32 * 1 / (clocks/us)) =			 * clock/second. Our precision is about 100 ppm.			 */			{	unsigned long eax=0, edx=1000;				ASM_DIV64_REG(cpu_khz, edx, tsc_quotient,						eax, edx);				printk("Detected %u.%03u MHz processor.\n",					cpu_khz / 1000, cpu_khz % 1000);			}			set_cyc2ns_scale(cpu_khz/1000);		}	}	/*	 * Math to calculate hpet to usec multiplier	 * Look for the comments at get_offset_hpet()	 */	ASM_DIV64_REG(result, remain, hpet_tick, 0, KERNEL_TICK_USEC);	if (remain > (hpet_tick >> 1))		result++; /* rounding the result */	hpet_usec_quotient = result;	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/4116c527ea9517623369a5b3b037aedde280d672/timer_hpet.c/buggy/arch/i386/kernel/timers/timer_hpet.c