Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 #ifdef __KERNEL__
0003 #ifndef _ASM_POWERPC_IRQ_H
0004 #define _ASM_POWERPC_IRQ_H
0005 
0006 /*
0007  */
0008 
0009 #include <linux/threads.h>
0010 #include <linux/list.h>
0011 #include <linux/radix-tree.h>
0012 
0013 #include <asm/types.h>
0014 #include <linux/atomic.h>
0015 
0016 
0017 extern atomic_t ppc_n_lost_interrupts;
0018 
0019 /* This number is used when no interrupt has been assigned */
0020 #define NO_IRQ          (0)
0021 
0022 /* Total number of virq in the platform */
0023 #define NR_IRQS     CONFIG_NR_IRQS
0024 
0025 /* Number of irqs reserved for a legacy isa controller */
0026 #define NR_IRQS_LEGACY      16
0027 
0028 extern irq_hw_number_t virq_to_hw(unsigned int virq);
0029 
0030 static __inline__ int irq_canonicalize(int irq)
0031 {
0032     return irq;
0033 }
0034 
0035 extern int distribute_irqs;
0036 
0037 struct pt_regs;
0038 
0039 #ifdef CONFIG_BOOKE_OR_40x
0040 /*
0041  * Per-cpu stacks for handling critical, debug and machine check
0042  * level interrupts.
0043  */
0044 extern void *critirq_ctx[NR_CPUS];
0045 extern void *dbgirq_ctx[NR_CPUS];
0046 extern void *mcheckirq_ctx[NR_CPUS];
0047 #endif
0048 
0049 /*
0050  * Per-cpu stacks for handling hard and soft interrupts.
0051  */
0052 extern void *hardirq_ctx[NR_CPUS];
0053 extern void *softirq_ctx[NR_CPUS];
0054 
0055 void __do_IRQ(struct pt_regs *regs);
0056 extern void __init init_IRQ(void);
0057 
0058 int irq_choose_cpu(const struct cpumask *mask);
0059 
0060 #endif /* _ASM_IRQ_H */
0061 #endif /* __KERNEL__ */