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;
|
||
|
}
|