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 init_IRQ_pint(void); 26 void make_imask_irq(unsigned int irq); 27 28 static inline int generic_irq_demux(int irq) 29 { 30 return irq; 31 } 32 33 #define irq_demux(irq) sh_mv.mv_irq_demux(irq) 34 35 void init_IRQ(void); 36 void migrate_irqs(void); 37 38 asmlinkage int do_IRQ(unsigned int irq, struct pt_regs *regs); 39 40 #ifdef CONFIG_IRQSTACKS 41 extern void irq_ctx_init(int cpu); 42 extern void irq_ctx_exit(int cpu); 43 #else 44 # define irq_ctx_init(cpu) do { } while (0) 45 # define irq_ctx_exit(cpu) do { } while (0) 46 #endif 47 48 #ifdef CONFIG_INTC_BALANCING 49 extern unsigned int irq_lookup(unsigned int irq); 50 extern void irq_finish(unsigned int irq); 51 #else 52 #define irq_lookup(irq) (irq) 53 #define irq_finish(irq) do { } while (0) 54 #endif 55 56 #include <asm-generic/irq.h> 57 58 #endif /* __ASM_SH_IRQ_H */ 59