162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci#ifndef _ASM_POWERPC_HARDIRQ_H 362306a36Sopenharmony_ci#define _ASM_POWERPC_HARDIRQ_H 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#include <linux/threads.h> 662306a36Sopenharmony_ci#include <linux/irq.h> 762306a36Sopenharmony_ci 862306a36Sopenharmony_citypedef struct { 962306a36Sopenharmony_ci unsigned int __softirq_pending; 1062306a36Sopenharmony_ci unsigned int timer_irqs_event; 1162306a36Sopenharmony_ci unsigned int broadcast_irqs_event; 1262306a36Sopenharmony_ci unsigned int timer_irqs_others; 1362306a36Sopenharmony_ci unsigned int pmu_irqs; 1462306a36Sopenharmony_ci unsigned int mce_exceptions; 1562306a36Sopenharmony_ci unsigned int spurious_irqs; 1662306a36Sopenharmony_ci unsigned int sreset_irqs; 1762306a36Sopenharmony_ci#ifdef CONFIG_PPC_WATCHDOG 1862306a36Sopenharmony_ci unsigned int soft_nmi_irqs; 1962306a36Sopenharmony_ci#endif 2062306a36Sopenharmony_ci#ifdef CONFIG_PPC_DOORBELL 2162306a36Sopenharmony_ci unsigned int doorbell_irqs; 2262306a36Sopenharmony_ci#endif 2362306a36Sopenharmony_ci} ____cacheline_aligned irq_cpustat_t; 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ciDECLARE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat); 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci#define __ARCH_IRQ_STAT 2862306a36Sopenharmony_ci#define __ARCH_IRQ_EXIT_IRQS_DISABLED 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_cistatic inline void ack_bad_irq(unsigned int irq) 3162306a36Sopenharmony_ci{ 3262306a36Sopenharmony_ci printk(KERN_CRIT "unexpected IRQ trap at vector %02x\n", irq); 3362306a36Sopenharmony_ci} 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ciextern u64 arch_irq_stat_cpu(unsigned int cpu); 3662306a36Sopenharmony_ci#define arch_irq_stat_cpu arch_irq_stat_cpu 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci#endif /* _ASM_POWERPC_HARDIRQ_H */ 39