/* enable IRQ+FIQ interrupts */ void arm_enable_interrupts (void) { unsigned long temp; __asm__ __volatile__("mrs %0, cpsr\n" "bic %0, %0, #0xc0\n" "msr cpsr_c, %0" : "=r" (temp) : : "memory"); } /* disable IRQ/FIQ interrupts * returns true if interrupts had been enabled before we disabled them */ int arm_disable_interrupts(void) { unsigned long old,temp; __asm__ __volatile__("mrs %0, cpsr\n" "orr %1, %0, #0xc0\n" "msr cpsr_c, %1" : "=r" (old), "=r" (temp) : : "memory"); return (old & 0x80) == 0; }