35#define QXK_ISR_CONTEXT_() (QXK_get_IPSR() != 0U)
38static inline uint32_t QXK_get_IPSR(
void) {
40 __asm
volatile (
"mrs %0,ipsr" :
"=r" (regIPSR));
45#define QXK_CONTEXT_SWITCH_() \
46 *Q_UINT2PTR_CAST(uint32_t, 0xE000ED04U) = (1U << 28U)
49#define QXK_ISR_ENTRY() ((void)0)
51#define QXK_ISR_EXIT() do { \
53 if (QXK_sched_() != 0U) { \
54 QXK_CONTEXT_SWITCH_(); \
57 QXK_ARM_ERRATUM_838869(); \
61 #define QXK_ARM_ERRATUM_838869() ((void)0)
67 #define QXK_ARM_ERRATUM_838869() \
68 __asm volatile ("dsb" ::: "memory")
84#define QXK_INIT() QXK_init()
QXK/C++ preemptive extended (blocking) kernel, platform-independent public interface.
void QXK_thread_ret(void)
__attribute__((always_inline)) static inline uint32_t QXK_get_IPSR(void)