diff options
Diffstat (limited to 'src/target/firmware/include/asm/system.h')
-rw-r--r-- | src/target/firmware/include/asm/system.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/target/firmware/include/asm/system.h b/src/target/firmware/include/asm/system.h index 2bf0cc51..3db0dc7a 100644 --- a/src/target/firmware/include/asm/system.h +++ b/src/target/firmware/include/asm/system.h @@ -17,6 +17,20 @@ : "memory", "cc"); \ }) +/* Save IRQ flags and disable FIQ + IRQ */ +#define local_firq_save(x) \ + ({ \ + unsigned long temp; \ + (void) (&temp == &x); \ + __asm__ __volatile__( \ + "mrs %0, cpsr @ local_firq_save\n" \ +" orr %1, %0, #0xC0\n" \ +" msr cpsr_c, %1" \ + : "=r" (x), "=r" (temp) \ + : \ + : "memory", "cc"); \ + }) + /* * Enable IRQs */ |