Skip to content
Snippets Groups Projects
Commit d3a2fe70 authored by Andrew Mackenzie's avatar Andrew Mackenzie Committed by Jeremy Soller
Browse files

Qemu hpet bug

parent 4bf307d8
No related branches found
No related tags found
1 merge request!210Qemu hpet bug
......@@ -14,7 +14,15 @@ pub fn counter() -> u128 {
let comparator = unsafe { hpet.base_address.read_u64(hpet::T0_COMPARATOR_OFFSET) };
// Get period in femtoseconds
let capability = unsafe { hpet.base_address.read_u64(hpet::CAPABILITY_OFFSET) };
let period_fs = capability >> 32;
// There seems to be a bug in qemu on macos that causes the calculation to produce 0 for
// period_fs and hence a divide by zero calculating the divisor - workaround it while we
// try and get a fix from qemu: https://gitlab.com/qemu-project/qemu/-/issues/1570
let mut period_fs = capability >> 32;
if period_fs == 0 {
period_fs = 10_000_000;
}
// Calculate divisor
let divisor = (pit::RATE as u64 * 1_000_000) / period_fs;
// Calculate last interrupt
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment