Clean up interrupt mask operations (#4153)

* Clean up interrupt mask operations

* Remove unnecessary interrupt enabling
This commit is contained in:
Dániel Buga 2025-09-22 09:09:38 +02:00 committed by GitHub
parent 44e7aea358
commit 13d66de06d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 4 additions and 23 deletions

View File

@ -159,9 +159,7 @@ pub fn enable_direct(interrupt: Interrupt, cpu_interrupt: CpuInterrupt) -> Resul
unsafe {
map(Cpu::current(), interrupt, cpu_interrupt);
xtensa_lx::interrupt::enable_mask(
xtensa_lx::interrupt::get_mask() | (1 << cpu_interrupt as u32),
);
xtensa_lx::interrupt::enable_mask(1 << cpu_interrupt as u32);
}
Ok(())
}
@ -513,9 +511,7 @@ mod vectored {
unsafe {
map(cpu, interrupt, cpu_interrupt);
xtensa_lx::interrupt::enable_mask(
xtensa_lx::interrupt::get_mask() | (1 << cpu_interrupt as u32),
);
xtensa_lx::interrupt::enable_mask(1 << cpu_interrupt as u32);
}
Ok(())
}

View File

@ -72,12 +72,10 @@ const SW_INTERRUPT: u32 = if cfg!(esp32) { 1 << 29 } else { 1 << 7 };
pub(crate) fn setup_multitasking() {
unsafe {
let enabled = xtensa_lx::interrupt::disable();
xtensa_lx::interrupt::enable_mask(
SW_INTERRUPT
| xtensa_lx_rt::interrupt::CpuInterruptLevel::Level2.mask()
| xtensa_lx_rt::interrupt::CpuInterruptLevel::Level6.mask()
| enabled,
| xtensa_lx_rt::interrupt::CpuInterruptLevel::Level6.mask(),
);
}
}

View File

@ -123,19 +123,6 @@ mod tests {
.start_app_core(
unsafe { &mut *core::ptr::addr_of_mut!(APP_CORE_STACK) },
move || {
// app core starts with interrupts disabled
unsafe {
esp_hal::xtensa_lx::interrupt::enable_mask(
esp_hal::xtensa_lx_rt::interrupt::CpuInterruptLevel::Level1.mask()
| esp_hal::xtensa_lx_rt::interrupt::CpuInterruptLevel::Level2
.mask()
| esp_hal::xtensa_lx_rt::interrupt::CpuInterruptLevel::Level3
.mask()
| esp_hal::xtensa_lx_rt::interrupt::CpuInterruptLevel::Level6
.mask(),
);
}
let timg0 = TimerGroup::new(peripherals.TIMG0);
esp_preempt::start(timg0.timer0);
let _init = esp_radio::init().unwrap();

View File

@ -154,7 +154,7 @@ where
let r = f();
// enable previously disabled interrupts
unsafe { enable_mask(old_mask) };
unsafe { set_mask(old_mask) };
r
}