summaryrefslogtreecommitdiffstats
path: root/src/target/firmware/include/asm
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2010-05-10 11:08:28 +0200
committerHarald Welte <laforge@gnumonks.org>2010-05-17 09:23:35 +0200
commitdbfa321c42c182a6964f25364c954f6f775b51e7 (patch)
treeb3f5f53b66f484f8c2529a23829213705158bf1a /src/target/firmware/include/asm
parent5da81b609e5955782168c40e0b86cd2fb40ebf50 (diff)
layer1: Disable FIQ as well as IRQ for locking between L1S and L1A
Diffstat (limited to 'src/target/firmware/include/asm')
-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
*/