Factor out TimerKHz and ShiftTSC calculation to tsctimer_configure().
Signed-off-by: Gerd Hoffmann kraxel@redhat.com --- src/hw/timer.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/src/hw/timer.c b/src/hw/timer.c index bdcb3bfca211..ce3d63cd75f6 100644 --- a/src/hw/timer.c +++ b/src/hw/timer.c @@ -58,6 +58,18 @@ u8 ShiftTSC VARFSEG; * Internal timer setup ****************************************************************/
+static void +tsctimer_configure(u64 t) +{ + while (t >= (1<<24)) { + ShiftTSC++; + t = (t + 1) >> 1; + } + TimerKHz = DIV_ROUND_UP((u32)t, 1000 * PMTIMER_TO_PIT); + TimerPort = 0; + dprintf(1, "CPU Mhz=%u\n", (TimerKHz << ShiftTSC) / 1000); +} + #define CALIBRATE_COUNT 0x800 // Approx 1.7ms
// Calibrate the CPU time-stamp-counter @@ -87,14 +99,7 @@ tsctimer_setup(void) dprintf(6, "tsc calibrate start=%u end=%u diff=%u\n" , (u32)start, (u32)end, (u32)diff); u64 t = DIV_ROUND_UP(diff * PMTIMER_HZ, CALIBRATE_COUNT); - while (t >= (1<<24)) { - ShiftTSC++; - t = (t + 1) >> 1; - } - TimerKHz = DIV_ROUND_UP((u32)t, 1000 * PMTIMER_TO_PIT); - TimerPort = 0; - - dprintf(1, "CPU Mhz=%u\n", (TimerKHz << ShiftTSC) / 1000); + tsctimer_configure(t); }
// Setup internal timers.