From 6ccc762393bd9cffadcce7429907d2ee3fd217d5 Mon Sep 17 00:00:00 2001 From: "Ronald G. Minnich" Date: Tue, 30 Jul 2002 21:44:53 +0000 Subject: [PATCH] The udelay I wrote was busted, now fixed, tested, working on AMD. --- src/cpu/p5/delay_tsc.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/cpu/p5/delay_tsc.c b/src/cpu/p5/delay_tsc.c index c96f3642db..39facd81a1 100644 --- a/src/cpu/p5/delay_tsc.c +++ b/src/cpu/p5/delay_tsc.c @@ -125,21 +125,16 @@ static unsigned long long calibrate_tsc(void) delta >>= 20; // save this for microsecond timing. clocks_per_usec = delta; +#define DEBUG #ifdef DEBUG - printf("end %x:%x, start %x:%x\n", + printk_notice("end %x:%x, start %x:%x\n", endhigh, endlow, starthigh, startlow); - printf("32-bit delta %d\n", (unsigned long) delta); + printk_notice("32-bit delta %d\n", (unsigned long) delta); #endif - // ok now we don't have divide for unsigned long long. - // so what we do is set an unsigned long to all 1's, which is just 1 less than - // 1 << 32. then we divide by an unsigned long version of delta (we now that delta fits - // easily in 32 bits). that way we avoid assembly code. - // avoid gcc complaints. - result = allones / (unsigned long) delta; - retval = result; + retval = clocks_per_usec; #ifdef DEBUG - printf(__FUNCTION__ " 32-bit result is %d\n", result); + printk_notice(__FUNCTION__ " 32-bit result is %d\n", result); #endif return retval; } @@ -154,7 +149,7 @@ void udelay(unsigned long us) unsigned long long clocks; if (!clocks_per_usec) { - clocks_per_usec = calibrate_tsc(); + calibrate_tsc(); printk_info("clocks_per_usec: %u\n", clocks_per_usec); } clocks = us;