summaryrefslogtreecommitdiffstats
path: root/src/target/firmware/include/asm/system.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/target/firmware/include/asm/system.h')
-rw-r--r--src/target/firmware/include/asm/system.h14
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
*/