xref: /linux/arch/loongarch/include/asm/hardirq.h (revision c532de5a67a70f8533d495f8f2aaa9a0491c3ad0)
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	4
16 
17 enum ipi_msg_type {
18 	IPI_RESCHEDULE,
19 	IPI_CALL_FUNCTION,
20 	IPI_IRQ_WORK,
21 	IPI_CLEAR_VECTOR,
22 };
23 
24 typedef struct {
25 	unsigned int ipi_irqs[NR_IPI];
26 	unsigned int __softirq_pending;
27 	atomic_t message ____cacheline_aligned_in_smp;
28 } ____cacheline_aligned irq_cpustat_t;
29 
30 DECLARE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat);
31 
32 #define __ARCH_IRQ_STAT
33 
34 #endif /* _ASM_HARDIRQ_H */
35