This commit is contained in:
Jeremy Soller
2025-06-13 20:26:41 -06:00
parent 5b88d1a845
commit f32d018d85
4 changed files with 14 additions and 9 deletions
-1
View File
@@ -102,7 +102,6 @@ impl GenericTimer {
impl InterruptHandler for GenericTimer {
fn irq_handler(&mut self, irq: u32) {
self.clear_irq();
{
*time::OFFSET.lock() += self.clk_freq as u128;
@@ -87,7 +87,10 @@ impl Bcm2835ArmInterruptController {
.ic
.irq_xlate(irq)
.unwrap();
info!("register bcm2835arm_ctrl as ic_idx {}'s child virq = {}", ic_idx, virq);
info!(
"register bcm2835arm_ctrl as ic_idx {}'s child virq = {}",
ic_idx, virq
);
ret_virq = Some(virq);
}
Ok((base as usize, size as usize, ret_virq))
@@ -1,11 +1,15 @@
use super::InterruptController;
use crate::{arch::device::{ROOT_IC_IDX, ROOT_IC_IDX_IS_SET}, dtb::{
get_mmio_address,
irqchip::{InterruptHandler, IrqCell, IrqDesc},
}};
use crate::{
arch::device::{ROOT_IC_IDX, ROOT_IC_IDX_IS_SET},
dtb::{
get_mmio_address,
irqchip::{InterruptHandler, IrqCell, IrqDesc},
},
};
use core::{
arch::asm,
ptr::{read_volatile, write_volatile}, sync::atomic::Ordering,
ptr::{read_volatile, write_volatile},
sync::atomic::Ordering,
};
use fdt::{node::FdtNode, Fdt};
use log::{debug, info};
+1 -2
View File
@@ -16,12 +16,11 @@ pub static ROOT_IC_IDX: AtomicUsize = AtomicUsize::new(0);
pub static ROOT_IC_IDX_IS_SET: AtomicUsize = AtomicUsize::new(0);
unsafe fn init_root_ic(fdt: &Fdt) {
let is_set = ROOT_IC_IDX_IS_SET.load(Ordering::Relaxed);
if is_set != 0 {
let ic_idx = ROOT_IC_IDX.load(Ordering::Relaxed);
info!("Already selected {} as root ic", ic_idx);
return ;
return;
}
let root_irqc_phandle = fdt