32 #ifndef MCU_COMMON_CRITICAL_H
33 #define MCU_COMMON_CRITICAL_H
53 #if defined(__ARM_ARCH_6M__) || defined(__ARM_ARCH_7M__) || \
54 defined(__ARM_ARCH_7EM__)
60 #define CRITICAL_ENTER() \
63 __asm__ volatile ("mrs %0, primask" : "=r" (_prm)); \
64 __asm__ volatile ("cpsid i" ::: "memory")
70 #define CRITICAL_EXIT() \
71 __asm__ volatile ("msr primask, %0" :: "r" (_prm) : "memory"); \
76 #pragma message "Using empty stubs for CRITICAL_*() macros. "\
77 "Please define them for your architecture."
79 #define CRITICAL_ENTER() do {
80 #define CRITICAL_EXIT() } while(0)