linux/arch/sh/include/asm/irq.h
<<
>>
Prefs
   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 * Only legacy non-sparseirq platforms have to set a reasonably sane
  10 * value here. sparseirq platforms allocate their irq_descs on the fly,
  11 * so will expand automatically based on the number of registered IRQs.
  12 */
  13#ifdef CONFIG_SPARSE_IRQ
  14# define NR_IRQS                8
  15#else
  16# define NR_IRQS                512
  17#endif
  18
  19/*
  20 * This is a special IRQ number for indicating that no IRQ has been
  21 * triggered and to simply ignore the IRQ dispatch. This is a special
  22 * case that can happen with IRQ auto-distribution when multiple CPUs
  23 * are woken up and signalled in parallel.
  24 */
  25#define NO_IRQ_IGNORE           ((unsigned int)-1)
  26
  27/*
  28 * Simple Mask Register Support
  29 */
  30extern void make_maskreg_irq(unsigned int irq);
  31extern unsigned short *irq_mask_register;
  32
  33/*
  34 * PINT IRQs
  35 */
  36void init_IRQ_pint(void);
  37void make_imask_irq(unsigned int irq);
  38
  39static inline int generic_irq_demux(int irq)
  40{
  41        return irq;
  42}
  43
  44#define irq_demux(irq)          sh_mv.mv_irq_demux(irq)
  45
  46void init_IRQ(void);
  47void migrate_irqs(void);
  48
  49asmlinkage int do_IRQ(unsigned int irq, struct pt_regs *regs);
  50
  51#ifdef CONFIG_IRQSTACKS
  52extern void irq_ctx_init(int cpu);
  53extern void irq_ctx_exit(int cpu);
  54#else
  55# define irq_ctx_init(cpu) do { } while (0)
  56# define irq_ctx_exit(cpu) do { } while (0)
  57#endif
  58
  59#ifdef CONFIG_INTC_BALANCING
  60extern unsigned int irq_lookup(unsigned int irq);
  61extern void irq_finish(unsigned int irq);
  62#else
  63#define irq_lookup(irq)         (irq)
  64#define irq_finish(irq)         do { } while (0)
  65#endif
  66
  67#include <asm-generic/irq.h>
  68
  69#endif /* __ASM_SH_IRQ_H */
  70