#ifndef __ASM_HARDIRQ_H | |
#define __ASM_HARDIRQ_H | |
#include <linux/cache.h> | |
#include <linux/threads.h> | |
#include <asm/irq.h> | |
typedef struct { | |
unsigned int __softirq_pending; | |
unsigned int local_timer_irqs; | |
} ____cacheline_aligned irq_cpustat_t; | |
#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */ | |
#if NR_IRQS > 512 | |
#define HARDIRQ_BITS 10 | |
#elif NR_IRQS > 256 | |
#define HARDIRQ_BITS 9 | |
#else | |
#define HARDIRQ_BITS 8 | |
#endif | |
/* | |
* The hardirq mask has to be large enough to have space | |
* for potentially all IRQ sources in the system nesting | |
* on a single CPU: | |
*/ | |
#if (1 << HARDIRQ_BITS) < NR_IRQS | |
# error HARDIRQ_BITS is too low! | |
#endif | |
#define __ARCH_IRQ_EXIT_IRQS_DISABLED 1 | |
#endif /* __ASM_HARDIRQ_H */ |