From e86c2b3b1c41c710acd34f6c85243c8bd5b5150d Mon Sep 17 00:00:00 2001 From: Gordon Tyler Date: Mon, 27 Oct 2025 10:41:33 -0400 Subject: mspm0: group irq handlers must check for NO_INTR (#4785) In the case of spurious interrupts, the interrupt group's STAT register may be set to NO_INTR, which must be checked before attempting to calculate the interrupt index from the STAT value. --- embassy-mspm0/build.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/embassy-mspm0/build.rs b/embassy-mspm0/build.rs index 1d118ad66..6264c9177 100644 --- a/embassy-mspm0/build.rs +++ b/embassy-mspm0/build.rs @@ -194,8 +194,15 @@ fn generate_groups() -> TokenStream { use crate::pac::#group_enum; let group = crate::pac::CPUSS.int_group(#group_number); - // MUST subtract by 1 since 0 is NO_INTR - let iidx = group.iidx().read().stat().to_bits() - 1; + let stat = group.iidx().read().stat(); + + // check for spurious interrupts + if stat == crate::pac::cpuss::vals::Iidx::NO_INTR { + return; + } + + // MUST subtract by 1 because Iidx::INT0=1 + let iidx = stat.to_bits() - 1; let Ok(group) = #group_enum::try_from(iidx as u8) else { return; -- cgit