#[cfg(all(target_arch = "msp430", feature = "critical-section-single-core"))]
mod critical_section_single_core {
use crate::{interrupt, register};
use critical_section::RawRestoreState;
struct CriticalSection;
critical_section::set_impl!(CriticalSection);
unsafe impl critical_section::Impl for CriticalSection {
#[cfg_attr(feature = "outline-cs-acq", inline(never))]
unsafe fn acquire() -> RawRestoreState {
let sr = register::sr::read().bits();
interrupt::disable();
core::mem::transmute(sr)
}
#[cfg_attr(feature = "outline-cs-rel", inline(never))]
unsafe fn release(sr: RawRestoreState) {
let sr: register::sr::Sr = core::mem::transmute(sr);
if sr.gie() {
interrupt::enable();
}
}
}
}
pub use ::critical_section::with;