11#ifndef ZEPHYR_INCLUDE_ARCH_ARM_ASM_INLINE_GCC_H_
12#define ZEPHYR_INCLUDE_ARCH_ARM_ASM_INLINE_GCC_H_
25#if defined(CONFIG_CPU_AARCH32_CORTEX_R) || defined(CONFIG_CPU_AARCH32_CORTEX_A)
47#if defined(CONFIG_ARMV6_M_ARMV8_M_BASELINE)
48#if CONFIG_MP_MAX_NUM_CPUS == 1 || defined(CONFIG_ARMV8_M_BASELINE)
49 __asm__
volatile(
"mrs %0, PRIMASK;"
55#error "Cortex-M0 and Cortex-M0+ require SoC specific support for cross core synchronisation."
57#elif defined(CONFIG_ARMV7_M_ARMV8_M_MAINLINE)
63 "msr BASEPRI_MAX, %1;"
65 :
"=r"(key),
"=r"(tmp)
66 :
"i"(_EXC_IRQ_DEFAULT_PRIO)
68#elif defined(CONFIG_ARMV7_R) || defined(CONFIG_AARCH32_ARMV8_R) \
69 || defined(CONFIG_ARMV7_A)
78#error Unknown ARM architecture
91#if defined(CONFIG_ARMV6_M_ARMV8_M_BASELINE)
99#elif defined(CONFIG_ARMV7_M_ARMV8_M_MAINLINE)
103 : :
"r"(key) :
"memory");
104#elif defined(CONFIG_ARMV7_R) || defined(CONFIG_AARCH32_ARMV8_R) \
105 || defined(CONFIG_ARMV7_A)
111 : : :
"memory",
"cc");
113#error Unknown ARM architecture
static ALWAYS_INLINE unsigned int arch_irq_lock(void)
Definition: asm_inline_gcc.h:43
static ALWAYS_INLINE void arch_irq_unlock(unsigned int key)
Definition: asm_inline_gcc.h:89
static ALWAYS_INLINE bool arch_irq_unlocked(unsigned int key)
Definition: asm_inline_gcc.h:117
ARM AArch32 public exception handling.
#define STRINGIFY(s)
Definition: common.h:134
#define ALWAYS_INLINE
Definition: common.h:129
#define I_BIT
Definition: cpu.h:30