From dbfa321c42c182a6964f25364c954f6f775b51e7 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Mon, 10 May 2010 11:08:28 +0200 Subject: layer1: Disable FIQ as well as IRQ for locking between L1S and L1A --- src/target/firmware/include/asm/system.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/target/firmware/include/asm') 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 */ -- cgit v1.2.3