mirror of
https://github.com/iceHtwoO/novaOS.git
synced 2026-04-16 20:22:26 +00:00
33 lines
606 B
Rust
33 lines
606 B
Rust
use crate::mmio_read;
|
|
|
|
const TIMER_CLO: u32 = 0x3F00_3004;
|
|
|
|
fn read_clo() -> u32 {
|
|
return mmio_read(TIMER_CLO);
|
|
}
|
|
|
|
/// Sleep for `us` microseconds
|
|
pub fn sleep_us(us: u32) {
|
|
let start = read_clo();
|
|
while read_clo() - start < us {
|
|
unsafe { core::arch::asm!("nop") }
|
|
}
|
|
}
|
|
|
|
/// Sleep for `ms` milliseconds
|
|
pub fn sleep_ms(ms: u32) {
|
|
sleep_us(ms * 1000);
|
|
}
|
|
|
|
/// Sleep for `s` seconds
|
|
pub fn sleep_s(s: u32) {
|
|
sleep_us(s * 1000);
|
|
}
|
|
|
|
/// Wait for `count` operations to pass
|
|
pub fn delay_nops(count: u32) {
|
|
for _ in 0..count {
|
|
unsafe { core::arch::asm!("nop") }
|
|
}
|
|
}
|