blob: 1cbb173bf5b108b2d136a78961ed7ffc873dc276 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#ifndef __ASM_HARDIRQ_H
2#define __ASM_HARDIRQ_H
3
4#include <linux/config.h>
5#include <linux/cache.h>
6#include <linux/threads.h>
7#include <asm/irq.h>
8
9typedef struct {
10 unsigned int __softirq_pending;
Russell King37ee16a2005-11-08 19:08:05 +000011 unsigned int local_timer_irqs;
Linus Torvalds1da177e2005-04-16 15:20:36 -070012} ____cacheline_aligned irq_cpustat_t;
13
14#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */
15
16#if NR_IRQS > 256
17#define HARDIRQ_BITS 9
18#else
19#define HARDIRQ_BITS 8
20#endif
21
22/*
23 * The hardirq mask has to be large enough to have space
24 * for potentially all IRQ sources in the system nesting
25 * on a single CPU:
26 */
27#if (1 << HARDIRQ_BITS) < NR_IRQS
28# error HARDIRQ_BITS is too low!
29#endif
30
31#define __ARCH_IRQ_EXIT_IRQS_DISABLED 1
32
33#endif /* __ASM_HARDIRQ_H */