xref: /linux/include/asm-generic/hardirq.h (revision e27ecdd94d81e5bc3d1f68591701db5adb342f0d)
1 #ifndef __ASM_GENERIC_HARDIRQ_H
2 #define __ASM_GENERIC_HARDIRQ_H
3 
4 #include <linux/cache.h>
5 #include <linux/threads.h>
6 #include <linux/irq.h>
7 
8 typedef struct {
9 	unsigned long __softirq_pending;
10 } ____cacheline_aligned irq_cpustat_t;
11 
12 #include <linux/irq_cpustat.h>	/* Standard mappings for irq_cpustat_t above */
13 
14 #ifndef HARDIRQ_BITS
15 #define HARDIRQ_BITS	8
16 #endif
17 
18 /*
19  * The hardirq mask has to be large enough to have
20  * space for potentially all IRQ sources in the system
21  * nesting on a single CPU:
22  */
23 #if (1 << HARDIRQ_BITS) < NR_IRQS
24 # error HARDIRQ_BITS is too low!
25 #endif
26 
27 #ifndef ack_bad_irq
28 static inline void ack_bad_irq(unsigned int irq)
29 {
30 	printk(KERN_CRIT "unexpected IRQ trap at vector %02x\n", irq);
31 }
32 #endif
33 
34 #endif /* __ASM_GENERIC_HARDIRQ_H */
35