1 #ifndef __ASM_HARDIRQ_H 2 #define __ASM_HARDIRQ_H 3 4 #include <xen/cache.h> 5 #include <xen/types.h> 6 7 typedef struct { 8 unsigned int __softirq_pending; 9 unsigned int __local_irq_count; 10 unsigned int __nmi_count; 11 bool_t __mwait_wakeup; 12 } __cacheline_aligned irq_cpustat_t; 13 14 #include <xen/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */ 15 16 #define in_irq() (local_irq_count(smp_processor_id()) != 0) 17 18 #define irq_enter() (local_irq_count(smp_processor_id())++) 19 #define irq_exit() (local_irq_count(smp_processor_id())--) 20 21 void ack_bad_irq(unsigned int irq); 22 23 extern void apic_intr_init(void); 24 extern void smp_intr_init(void); 25 26 #endif /* __ASM_HARDIRQ_H */ 27