#include <linux/smp.h>
+#ifndef CONFIG_GENERIC_HARDIRQS
+# define nr_irqs NR_IRQS
+
+# define for_each_irq_desc(irq, desc) \
+ for (irq = 0; irq < nr_irqs; irq++)
+#else
+extern int nr_irqs;
+
+# define for_each_irq_desc(irq, desc) \
+ for (irq = 0, desc = irq_desc; irq < nr_irqs; irq++, desc++)
+#endif
+
#ifndef CONFIG_S390
#include <linux/linkage.h>
extern struct irq_desc *irq_desc;
#endif
-#ifdef CONFIG_GENERIC_HARDIRQS
-#define for_each_irq_desc(irq, desc) \
- for (irq = 0, desc = irq_desc; irq < nr_irqs; irq++, desc = &irq_desc[irq])
-#endif
-
#else
extern struct irq_desc *sparse_irqs;