^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /* hardirq.h: PA-RISC hard IRQ support.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * Copyright (C) 2001 Matthew Wilcox <matthew@wil.cx>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Copyright (C) 2013 Helge Deller <deller@gmx.de>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #ifndef _PARISC_HARDIRQ_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #define _PARISC_HARDIRQ_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include <linux/cache.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #include <linux/threads.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #include <linux/irq.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #ifdef CONFIG_IRQSTACKS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #define __ARCH_HAS_DO_SOFTIRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) typedef struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) unsigned int __softirq_pending;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) unsigned int kernel_stack_usage;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) unsigned int irq_stack_usage;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #ifdef CONFIG_SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) unsigned int irq_resched_count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) unsigned int irq_call_count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) unsigned int irq_unaligned_count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) unsigned int irq_fpassist_count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) unsigned int irq_tlb_count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) } ____cacheline_aligned irq_cpustat_t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) DECLARE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #define __ARCH_IRQ_STAT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) #define __IRQ_STAT(cpu, member) (irq_stat[cpu].member)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) #define inc_irq_stat(member) this_cpu_inc(irq_stat.member)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) #define __inc_irq_stat(member) __this_cpu_inc(irq_stat.member)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) #define ack_bad_irq(irq) WARN(1, "unexpected IRQ trap at vector %02x\n", irq)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) #endif /* _PARISC_HARDIRQ_H */