Fix overflow in LAPIC timer frequence calibration.
This commit is contained in:
parent
f3787e9903
commit
2846b0ab97
|
|
@ -442,7 +442,8 @@ static int spurious_irq_handler(irq_hook_t * UNUSED(hook))
|
|||
|
||||
static void apic_calibrate_clocks(unsigned cpu)
|
||||
{
|
||||
u32_t lvtt, val, lapic_delta;
|
||||
u32_t lvtt, val;
|
||||
u64_t lapic_delta;
|
||||
u64_t tsc_delta;
|
||||
u64_t cpu_freq;
|
||||
|
||||
|
|
@ -514,7 +515,8 @@ static void apic_calibrate_clocks(unsigned cpu)
|
|||
lapic_delta = lapic_tctr0 - lapic_tctr1;
|
||||
tsc_delta = tsc1 - tsc0;
|
||||
|
||||
lapic_bus_freq[cpuid] = system_hz * lapic_delta / (PROBE_TICKS - 1);
|
||||
lapic_bus_freq[cpuid] = make64(system_hz,0) * lapic_delta /
|
||||
make64(PROBE_TICKS-1,0);
|
||||
BOOT_VERBOSE(printf("APIC bus freq %u MHz\n",
|
||||
lapic_bus_freq[cpuid] / 1000000));
|
||||
cpu_freq = (tsc_delta / (PROBE_TICKS - 1)) * make64(system_hz, 0);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user