1  /* SPDX-License-Identifier: GPL-2.0 */
2  #ifndef _ASM_POWERPC_HARDIRQ_H
3  #define _ASM_POWERPC_HARDIRQ_H
4  
5  #include <linux/threads.h>
6  #include <linux/irq.h>
7  
8  typedef struct {
9  	unsigned int __softirq_pending;
10  	unsigned int timer_irqs_event;
11  	unsigned int broadcast_irqs_event;
12  	unsigned int timer_irqs_others;
13  	unsigned int pmu_irqs;
14  	unsigned int mce_exceptions;
15  	unsigned int spurious_irqs;
16  	unsigned int sreset_irqs;
17  #ifdef CONFIG_PPC_WATCHDOG
18  	unsigned int soft_nmi_irqs;
19  #endif
20  #ifdef CONFIG_PPC_DOORBELL
21  	unsigned int doorbell_irqs;
22  #endif
23  } ____cacheline_aligned irq_cpustat_t;
24  
25  DECLARE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat);
26  
27  #define __ARCH_IRQ_STAT
28  #define __ARCH_IRQ_EXIT_IRQS_DISABLED
29  
ack_bad_irq(unsigned int irq)30  static inline void ack_bad_irq(unsigned int irq)
31  {
32  	printk(KERN_CRIT "unexpected IRQ trap at vector %02x\n", irq);
33  }
34  
35  extern u64 arch_irq_stat_cpu(unsigned int cpu);
36  #define arch_irq_stat_cpu	arch_irq_stat_cpu
37  
38  #endif /* _ASM_POWERPC_HARDIRQ_H */
39