*/
 #include <asm/hw_irq.h>
 
+#ifndef ARCH_IRQ_INIT_FLAGS
+# define ARCH_IRQ_INIT_FLAGS   0
+#endif
+
+#define IRQ_DEFAULT_INIT_FLAGS (IRQ_DISABLED | ARCH_IRQ_INIT_FLAGS)
+
 struct irqaction;
 extern int setup_irq(unsigned int irq, struct irqaction *new);
 extern void remove_irq(unsigned int irq, struct irqaction *act);
 
 
        /* Ensure we don't have left over values from a previous use of this irq */
        raw_spin_lock_irqsave(&desc->lock, flags);
-       desc->status = IRQ_DISABLED;
+       desc->status = IRQ_DEFAULT_INIT_FLAGS;
        desc->irq_data.chip = &no_irq_chip;
        desc->handle_irq = handle_bad_irq;
        desc->depth = 1;
 
 #ifdef CONFIG_SPARSE_IRQ
 
 static struct irq_desc irq_desc_init = {
-       .status         = IRQ_DISABLED,
+       .status         = IRQ_DEFAULT_INIT_FLAGS,
        .handle_irq     = handle_bad_irq,
        .depth          = 1,
        .lock           = __RAW_SPIN_LOCK_UNLOCKED(irq_desc_init.lock),
 
 static struct irq_desc irq_desc_legacy[NR_IRQS_LEGACY] __cacheline_aligned_in_smp = {
        [0 ... NR_IRQS_LEGACY-1] = {
-               .status         = IRQ_DISABLED,
+               .status         = IRQ_DEFAULT_INIT_FLAGS,
                .handle_irq     = handle_bad_irq,
                .depth          = 1,
                .lock           = __RAW_SPIN_LOCK_UNLOCKED(irq_desc_init.lock),
 
 struct irq_desc irq_desc[NR_IRQS] __cacheline_aligned_in_smp = {
        [0 ... NR_IRQS-1] = {
-               .status         = IRQ_DISABLED,
+               .status         = IRQ_DEFAULT_INIT_FLAGS,
                .handle_irq     = handle_bad_irq,
                .depth          = 1,
                .lock           = __RAW_SPIN_LOCK_UNLOCKED(irq_desc->lock),