37 lines
491 B
C
37 lines
491 B
C
#ifndef CPU_IRQ_H
|
|
#define CPU_IRQ_H
|
|
|
|
|
|
#include "asm/hwi.h"
|
|
|
|
#ifndef CPU_IRQ_USAGE_DEBUG
|
|
#define ___interrupt __attribute__((interrupt("")))
|
|
#else
|
|
#define ___interrupt
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#define local_irq_save(flags) \
|
|
do { \
|
|
int tmp; \
|
|
__asm__ volatile ("%0 = icfg" : "=r"(flags)); \
|
|
tmp = flags & ~BIT(8); \
|
|
__asm__ volatile ("icfg = %0" :: "r"(tmp)); \
|
|
}while(0)
|
|
|
|
|
|
#define local_irq_restore(flags) \
|
|
do { \
|
|
__asm__ volatile ("icfg = %0" :: "r"(flags)); \
|
|
}while(0)
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|