1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef __ASM_SH_IRQ_H 3 #define __ASM_SH_IRQ_H 4 5 #include <linux/cpumask.h> 6 #include <asm/machvec.h> 7 8 /* 9 * This is a special IRQ number for indicating that no IRQ has been 10 * triggered and to simply ignore the IRQ dispatch. This is a special 11 * case that can happen with IRQ auto-distribution when multiple CPUs 12 * are woken up and signalled in parallel. 13 */ 14 #define NO_IRQ_IGNORE ((unsigned int)-1) 15 16 /* 17 * Simple Mask Register Support 18 */ 19 extern void make_maskreg_irq(unsigned int irq); 20 extern unsigned short *irq_mask_register; 21 22 /* 23 * PINT IRQs 24 */ 25 void make_imask_irq(unsigned int irq); 26 27 static inline int generic_irq_demux(int irq) 28 { 29 return irq; 30 } 31 32 #define irq_demux(irq) sh_mv.mv_irq_demux(irq) 33 34 void init_IRQ(void); 35 void migrate_irqs(void); 36 37 asmlinkage int do_IRQ(unsigned int irq, struct pt_regs *regs); 38 39 #ifdef CONFIG_IRQSTACKS 40 extern void irq_ctx_init(int cpu); 41 extern void irq_ctx_exit(int cpu); 42 #else 43 # define irq_ctx_init(cpu) do { } while (0) 44 # define irq_ctx_exit(cpu) do { } while (0) 45 #endif 46 47 #ifdef CONFIG_INTC_BALANCING 48 extern unsigned int irq_lookup(unsigned int irq); 49 extern void irq_finish(unsigned int irq); 50 #else 51 #define irq_lookup(irq) (irq) 52 #define irq_finish(irq) do { } while (0) 53 #endif 54 55 #include <asm-generic/irq.h> 56 57 #endif /* __ASM_SH_IRQ_H */ 58