diff --git a/09_delays/kernel8 b/09_delays/kernel8 index 977ff863..da3c6d6d 100755 Binary files a/09_delays/kernel8 and b/09_delays/kernel8 differ diff --git a/09_delays/kernel8.img b/09_delays/kernel8.img index 8fdb3745..668bc5ca 100755 Binary files a/09_delays/kernel8.img and b/09_delays/kernel8.img differ diff --git a/09_delays/src/delays.rs b/09_delays/src/delays.rs index a2a46284..88676337 100644 --- a/09_delays/src/delays.rs +++ b/09_delays/src/delays.rs @@ -89,7 +89,7 @@ impl SysTmr { // mean infinite loop if t > 0 { loop { - if self.get_system_timer() < (t + n) { + if self.get_system_timer() > (t + n) { break; } } @@ -108,7 +108,7 @@ pub fn wait_msec(n: u32) { let frq = CNTFRQ_EL0.get(); // Calculate number of ticks - let tval = (frq as u32 / 1000) * n; + let tval = (u64::from(frq) * u64::from(n) / 1_000_000) as u32; // Set the compare value register CNTP_TVAL_EL0.set(tval); diff --git a/0B_exception_levels/kernel8 b/0B_exception_levels/kernel8 index ac826e46..dd2d163a 100755 Binary files a/0B_exception_levels/kernel8 and b/0B_exception_levels/kernel8 differ diff --git a/0B_exception_levels/kernel8.img b/0B_exception_levels/kernel8.img index 16f6f007..4c0be6f9 100755 Binary files a/0B_exception_levels/kernel8.img and b/0B_exception_levels/kernel8.img differ diff --git a/0B_exception_levels/src/delays.rs b/0B_exception_levels/src/delays.rs index 73671ef9..693f21d9 100644 --- a/0B_exception_levels/src/delays.rs +++ b/0B_exception_levels/src/delays.rs @@ -35,7 +35,7 @@ pub fn wait_msec(n: u32) { let frq = CNTFRQ_EL0.get(); // Calculate number of ticks - let tval = (frq as u32 / 1000) * n; + let tval = (u64::from(frq) * u64::from(n) / 1_000_000) as u32; // Set the compare value register CNTP_TVAL_EL0.set(tval);