|
@@ -26,75 +26,6 @@
|
|
|
|
|
|
DECLARE_GLOBAL_DATA_PTR;
|
|
|
|
|
|
-#ifdef CONFIG_USE_IRQ
|
|
|
-int interrupt_init (void)
|
|
|
-{
|
|
|
- unsigned long cpsr;
|
|
|
-
|
|
|
- /*
|
|
|
- * setup up stacks if necessary
|
|
|
- */
|
|
|
- IRQ_STACK_START = gd->irq_sp - 4;
|
|
|
- IRQ_STACK_START_IN = gd->irq_sp + 8;
|
|
|
- FIQ_STACK_START = IRQ_STACK_START - CONFIG_STACKSIZE_IRQ;
|
|
|
-
|
|
|
-
|
|
|
- __asm__ __volatile__("mrs %0, cpsr\n"
|
|
|
- : "=r" (cpsr)
|
|
|
- :
|
|
|
- : "memory");
|
|
|
-
|
|
|
- __asm__ __volatile__("msr cpsr_c, %0\n"
|
|
|
- "mov sp, %1\n"
|
|
|
- :
|
|
|
- : "r" (IRQ_MODE | I_BIT | F_BIT | (cpsr & ~FIQ_MODE)),
|
|
|
- "r" (IRQ_STACK_START)
|
|
|
- : "memory");
|
|
|
-
|
|
|
- __asm__ __volatile__("msr cpsr_c, %0\n"
|
|
|
- "mov sp, %1\n"
|
|
|
- :
|
|
|
- : "r" (FIQ_MODE | I_BIT | F_BIT | (cpsr & ~IRQ_MODE)),
|
|
|
- "r" (FIQ_STACK_START)
|
|
|
- : "memory");
|
|
|
-
|
|
|
- __asm__ __volatile__("msr cpsr_c, %0"
|
|
|
- :
|
|
|
- : "r" (cpsr)
|
|
|
- : "memory");
|
|
|
-
|
|
|
- return arch_interrupt_init();
|
|
|
-}
|
|
|
-
|
|
|
-/* enable IRQ interrupts */
|
|
|
-void enable_interrupts (void)
|
|
|
-{
|
|
|
- unsigned long temp;
|
|
|
- __asm__ __volatile__("mrs %0, cpsr\n"
|
|
|
- "bic %0, %0, #0x80\n"
|
|
|
- "msr cpsr_c, %0"
|
|
|
- : "=r" (temp)
|
|
|
- :
|
|
|
- : "memory");
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-/*
|
|
|
- * disable IRQ/FIQ interrupts
|
|
|
- * returns true if interrupts had been enabled before we disabled them
|
|
|
- */
|
|
|
-int 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;
|
|
|
-}
|
|
|
-#else
|
|
|
int interrupt_init (void)
|
|
|
{
|
|
|
/*
|
|
@@ -113,8 +44,6 @@ int disable_interrupts (void)
|
|
|
{
|
|
|
return 0;
|
|
|
}
|
|
|
-#endif
|
|
|
-
|
|
|
|
|
|
void bad_mode (void)
|
|
|
{
|
|
@@ -212,7 +141,6 @@ void do_fiq (struct pt_regs *pt_regs)
|
|
|
bad_mode ();
|
|
|
}
|
|
|
|
|
|
-#ifndef CONFIG_USE_IRQ
|
|
|
void do_irq (struct pt_regs *pt_regs)
|
|
|
{
|
|
|
efi_restore_gd();
|
|
@@ -220,4 +148,3 @@ void do_irq (struct pt_regs *pt_regs)
|
|
|
show_regs (pt_regs);
|
|
|
bad_mode ();
|
|
|
}
|
|
|
-#endif
|