27 lines
592 B
C
27 lines
592 B
C
|
|
/* 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;
|
|
}
|