#![expect(dead_code)]
pub mod boot;
pub mod cpu;
pub mod device;
pub(crate) mod io;
pub(crate) mod iommu;
pub mod irq;
pub(crate) mod mm;
mod power;
pub(crate) mod serial;
pub(crate) mod task;
mod timer;
pub mod trap;
#[cfg(feature = "cvm_guest")]
pub(crate) fn init_cvm_guest() {
}
pub(crate) unsafe fn late_init_on_bsp() {
unsafe { trap::init_on_cpu() };
let io_mem_builder = unsafe { io::construct_io_mem_allocator_builder() };
unsafe { irq::chip::init_on_bsp(&io_mem_builder) };
unsafe { irq::ipi::init_on_bsp() };
unsafe { timer::init_on_bsp() };
unsafe { crate::boot::smp::boot_all_aps() };
unsafe { crate::io::init(io_mem_builder) };
power::init();
}
pub(crate) unsafe fn init_on_ap() {
unsafe { trap::init_on_cpu() };
unsafe { irq::chip::init_on_ap() };
unsafe { irq::ipi::init_on_ap() };
unsafe { timer::init_on_ap() };
}
pub fn tsc_freq() -> u64 {
timer::get_timebase_freq()
}
pub fn read_tsc() -> u64 {
riscv::register::time::read64()
}
pub fn read_random() -> Option<u64> {
None
}
pub(crate) fn enable_cpu_features() {
cpu::extension::init();
}