cortex_m/register/
faultmask.rs1#[cfg(cortex_m)]
4use core::arch::asm;
5use cortex_m_macros::asm_cfg;
6
7#[derive(Clone, Copy, Debug, Eq, PartialEq)]
9pub enum Faultmask {
10 Active,
12 Inactive,
14}
15
16impl Faultmask {
17 #[inline]
19 pub fn is_active(self) -> bool {
20 self == Faultmask::Active
21 }
22
23 #[inline]
25 pub fn is_inactive(self) -> bool {
26 self == Faultmask::Inactive
27 }
28}
29
30#[inline]
32#[asm_cfg(any(armv7m, armv8m_main))]
33pub fn read() -> Faultmask {
34 let r: u32;
35 unsafe { asm!("mrs {}, FAULTMASK", out(reg) r, options(nomem, nostack, preserves_flags)) };
36 if r & (1 << 0) == (1 << 0) {
37 Faultmask::Inactive
38 } else {
39 Faultmask::Active
40 }
41}