: "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
*/
unsigned int i;
/* get and reset the currently scheduled tasks */
- local_irq_save(flags);
+ local_firq_save(flags);
scheduled = l1s.scheduled_compl;
l1s.scheduled_compl = 0;
local_irq_restore(flags);