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