From 0ab1e8f9faa149e14e3348f9a88fb4efea26962a Mon Sep 17 00:00:00 2001 From: Felipe Balbi Date: Thu, 11 Dec 2025 08:15:07 -0800 Subject: Remove critical section --- embassy-mcxa/src/reset_reason.rs | 80 ++++++++++++++++++++-------------------- 1 file changed, 39 insertions(+), 41 deletions(-) (limited to 'embassy-mcxa') diff --git a/embassy-mcxa/src/reset_reason.rs b/embassy-mcxa/src/reset_reason.rs index 1f5a0ec1f..f9a9ce096 100644 --- a/embassy-mcxa/src/reset_reason.rs +++ b/embassy-mcxa/src/reset_reason.rs @@ -7,47 +7,45 @@ /// Reads the most recent reset reason from the Core Mode Controller /// (CMC). pub fn reset_reason() -> ResetReason { - critical_section::with(|_| { - let regs = unsafe { &*crate::pac::Cmc::steal() }; - - let srs = regs.srs().read(); - - if srs.wakeup().is_enabled() { - ResetReason::WakeUp - } else if srs.por().bit_is_set() { - ResetReason::Por - } else if srs.vd().bit_is_set() { - ResetReason::VoltageDetect - } else if srs.warm().bit_is_set() { - ResetReason::Warm - } else if srs.fatal().bit_is_set() { - ResetReason::Fatal - } else if srs.pin().bit_is_set() { - ResetReason::Pin - } else if srs.dap().bit_is_set() { - ResetReason::Dap - } else if srs.rstack().bit_is_set() { - ResetReason::ResetAckTimeout - } else if srs.lpack().bit_is_set() { - ResetReason::LowPowerAckTimeout - } else if srs.scg().bit_is_set() { - ResetReason::SystemClockGeneration - } else if srs.wwdt0().bit_is_set() { - ResetReason::Wwdt0 - } else if srs.sw().bit_is_set() { - ResetReason::Software - } else if srs.lockup().bit_is_set() { - ResetReason::Lockup - } else if srs.cdog0().bit_is_set() { - ResetReason::Cdog0 - } else if srs.cdog1().bit_is_set() { - ResetReason::Cdog1 - } else if srs.jtag().bit_is_set() { - ResetReason::Jtag - } else { - ResetReason::Tamper - } - }) + let regs = unsafe { &*crate::pac::Cmc::steal() }; + + let srs = regs.srs().read(); + + if srs.wakeup().is_enabled() { + ResetReason::WakeUp + } else if srs.por().bit_is_set() { + ResetReason::Por + } else if srs.vd().bit_is_set() { + ResetReason::VoltageDetect + } else if srs.warm().bit_is_set() { + ResetReason::Warm + } else if srs.fatal().bit_is_set() { + ResetReason::Fatal + } else if srs.pin().bit_is_set() { + ResetReason::Pin + } else if srs.dap().bit_is_set() { + ResetReason::Dap + } else if srs.rstack().bit_is_set() { + ResetReason::ResetAckTimeout + } else if srs.lpack().bit_is_set() { + ResetReason::LowPowerAckTimeout + } else if srs.scg().bit_is_set() { + ResetReason::SystemClockGeneration + } else if srs.wwdt0().bit_is_set() { + ResetReason::Wwdt0 + } else if srs.sw().bit_is_set() { + ResetReason::Software + } else if srs.lockup().bit_is_set() { + ResetReason::Lockup + } else if srs.cdog0().bit_is_set() { + ResetReason::Cdog0 + } else if srs.cdog1().bit_is_set() { + ResetReason::Cdog1 + } else if srs.jtag().bit_is_set() { + ResetReason::Jtag + } else { + ResetReason::Tamper + } } /// Indicates the type and source of the most recent reset. -- cgit