xref: /linux/arch/loongarch/include/asm/hardirq.h (revision a3a02a52bcfcbcc4a637d4b68bf1bc391c9fad02)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
4  */
5 #ifndef _ASM_HARDIRQ_H
6 #define _ASM_HARDIRQ_H
7 
8 #include <linux/cache.h>
9 #include <linux/threads.h>
10 #include <linux/irq.h>
11 
12 extern void ack_bad_irq(unsigned int irq);
13 #define ack_bad_irq ack_bad_irq
14 
15 #define NR_IPI	3
16 
17 enum ipi_msg_type {
18 	IPI_RESCHEDULE,
19 	IPI_CALL_FUNCTION,
20 	IPI_IRQ_WORK,
21 };
22 
23 typedef struct {
24 	unsigned int ipi_irqs[NR_IPI];
25 	unsigned int __softirq_pending;
26 	atomic_t message ____cacheline_aligned_in_smp;
27 } ____cacheline_aligned irq_cpustat_t;
28 
29 DECLARE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat);
30 
31 #define __ARCH_IRQ_STAT
32 
33 #endif /* _ASM_HARDIRQ_H */
34