chore: entry: store N_CPUS

This commit is contained in:
Paul Pan 2024-05-20 16:16:03 +08:00
parent 5d5c18592f
commit 32e21b3468

View File

@ -4,16 +4,21 @@ use crate::plat::timer::{Timer, TimerOps};
use crate::plat::trap::{Trap, TrapOps};
use crate::scheduler::SCHEDULER;
use core::cell::Cell;
use core::sync::atomic::{AtomicUsize, Ordering};
use fdt::Fdt;
use log::{debug, error, info, warn};
#[thread_local]
pub static HART_ID: Cell<usize> = Cell::new(0);
pub static N_CPUS: AtomicUsize = AtomicUsize::new(1);
pub fn rust_main() -> ! {
let fdt_addr = crate::arch::FDT.load(core::sync::atomic::Ordering::Acquire);
let fdt_addr = crate::arch::FDT.load(Ordering::Acquire);
let fdt = unsafe { Fdt::from_ptr(fdt_addr).unwrap() };
N_CPUS.store(fdt.cpus().count(), Ordering::Release);
setup_console(&fdt);
info!("Kernel Started");