diff --git a/cortex-m/src/peripheral/mod.rs b/cortex-m/src/peripheral/mod.rs index d65707c1..5c0d5d1f 100644 --- a/cortex-m/src/peripheral/mod.rs +++ b/cortex-m/src/peripheral/mod.rs @@ -163,6 +163,8 @@ impl Peripherals { if unsafe { TAKEN } { None } else { + unsafe { TAKEN = true } + Some(unsafe { Peripherals::steal() }) } }) @@ -170,58 +172,54 @@ impl Peripherals { /// Unchecked version of `Peripherals::take` #[inline] - pub unsafe fn steal() -> Self { - unsafe { - TAKEN = true; - - Peripherals { - #[cfg(feature = "cm7")] - AC: AC { - _marker: PhantomData, - }, - CBP: CBP { - _marker: PhantomData, - }, - CPUID: CPUID { - _marker: PhantomData, - }, - DCB: DCB { - _marker: PhantomData, - }, - DWT: DWT { - _marker: PhantomData, - }, - FPB: FPB { - _marker: PhantomData, - }, - FPU: FPU { - _marker: PhantomData, - }, - ICB: ICB { - _marker: PhantomData, - }, - ITM: ITM { - _marker: PhantomData, - }, - MPU: MPU { - _marker: PhantomData, - }, - NVIC: NVIC { - _marker: PhantomData, - }, - SAU: SAU { - _marker: PhantomData, - }, - SCB: SCB { - _marker: PhantomData, - }, - SYST: SYST { - _marker: PhantomData, - }, - TPIU: TPIU { - _marker: PhantomData, - }, - } + pub const unsafe fn steal() -> Self { + Peripherals { + #[cfg(feature = "cm7")] + AC: AC { + _marker: PhantomData, + }, + CBP: CBP { + _marker: PhantomData, + }, + CPUID: CPUID { + _marker: PhantomData, + }, + DCB: DCB { + _marker: PhantomData, + }, + DWT: DWT { + _marker: PhantomData, + }, + FPB: FPB { + _marker: PhantomData, + }, + FPU: FPU { + _marker: PhantomData, + }, + ICB: ICB { + _marker: PhantomData, + }, + ITM: ITM { + _marker: PhantomData, + }, + MPU: MPU { + _marker: PhantomData, + }, + NVIC: NVIC { + _marker: PhantomData, + }, + SAU: SAU { + _marker: PhantomData, + }, + SCB: SCB { + _marker: PhantomData, + }, + SYST: SYST { + _marker: PhantomData, + }, + TPIU: TPIU { + _marker: PhantomData, + }, } } } diff --git a/xtask/tests/ci.rs b/xtask/tests/ci.rs index 410e59b9..947f0a59 100644 --- a/xtask/tests/ci.rs +++ b/xtask/tests/ci.rs @@ -50,7 +50,7 @@ static PACKAGE_FEATURES: &[(&str, &[&str], &[&str])] = &[ ("panic-itm", NON_BASE_TARGETS, &[]), ]; -fn check_crates_build(is_nightly: bool, is_msrv: bool) { +fn check_crates_build(is_nightly: bool, _is_msrv: bool) { // Build all crates for each supported target. for (package, targets, all_features) in PACKAGE_FEATURES { for target in *targets {