linux/arch/powerpc/include/asm/irq.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-or-later */
   2#ifdef __KERNEL__
   3#ifndef _ASM_POWERPC_IRQ_H
   4#define _ASM_POWERPC_IRQ_H
   5
   6/*
   7 */
   8
   9#include <linux/irqdomain.h>
  10#include <linux/threads.h>
  11#include <linux/list.h>
  12#include <linux/radix-tree.h>
  13
  14#include <asm/types.h>
  15#include <linux/atomic.h>
  16
  17
  18extern atomic_t ppc_n_lost_interrupts;
  19
  20/* This number is used when no interrupt has been assigned */
  21#define NO_IRQ                  (0)
  22
  23/* Total number of virq in the platform */
  24#define NR_IRQS         CONFIG_NR_IRQS
  25
  26/* Same thing, used by the generic IRQ code */
  27#define NR_IRQS_LEGACY          NUM_ISA_INTERRUPTS
  28
  29extern irq_hw_number_t virq_to_hw(unsigned int virq);
  30
  31static __inline__ int irq_canonicalize(int irq)
  32{
  33        return irq;
  34}
  35
  36extern int distribute_irqs;
  37
  38struct pt_regs;
  39
  40#if defined(CONFIG_BOOKE) || defined(CONFIG_40x)
  41/*
  42 * Per-cpu stacks for handling critical, debug and machine check
  43 * level interrupts.
  44 */
  45extern void *critirq_ctx[NR_CPUS];
  46extern void *dbgirq_ctx[NR_CPUS];
  47extern void *mcheckirq_ctx[NR_CPUS];
  48#endif
  49
  50/*
  51 * Per-cpu stacks for handling hard and soft interrupts.
  52 */
  53extern void *hardirq_ctx[NR_CPUS];
  54extern void *softirq_ctx[NR_CPUS];
  55
  56void call_do_softirq(void *sp);
  57void call_do_irq(struct pt_regs *regs, void *sp);
  58extern void do_IRQ(struct pt_regs *regs);
  59extern void __init init_IRQ(void);
  60extern void __do_irq(struct pt_regs *regs);
  61
  62int irq_choose_cpu(const struct cpumask *mask);
  63
  64#endif /* _ASM_IRQ_H */
  65#endif /* __KERNEL__ */
  66