18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci#ifndef __ASM_ARM_IRQ_H 38c2ecf20Sopenharmony_ci#define __ASM_ARM_IRQ_H 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci#define NR_IRQS_LEGACY 16 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci#ifndef CONFIG_SPARSE_IRQ 88c2ecf20Sopenharmony_ci#include <mach/irqs.h> 98c2ecf20Sopenharmony_ci#else 108c2ecf20Sopenharmony_ci#define NR_IRQS NR_IRQS_LEGACY 118c2ecf20Sopenharmony_ci#endif 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci#ifndef irq_canonicalize 148c2ecf20Sopenharmony_ci#define irq_canonicalize(i) (i) 158c2ecf20Sopenharmony_ci#endif 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci/* 188c2ecf20Sopenharmony_ci * Use this value to indicate lack of interrupt 198c2ecf20Sopenharmony_ci * capability 208c2ecf20Sopenharmony_ci */ 218c2ecf20Sopenharmony_ci#ifndef NO_IRQ 228c2ecf20Sopenharmony_ci#define NO_IRQ ((unsigned int)(-1)) 238c2ecf20Sopenharmony_ci#endif 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ci#ifndef __ASSEMBLY__ 268c2ecf20Sopenharmony_cistruct irqaction; 278c2ecf20Sopenharmony_cistruct pt_regs; 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ciextern void asm_do_IRQ(unsigned int, struct pt_regs *); 308c2ecf20Sopenharmony_civoid handle_IRQ(unsigned int, struct pt_regs *); 318c2ecf20Sopenharmony_civoid init_IRQ(void); 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ci#ifdef CONFIG_SMP 348c2ecf20Sopenharmony_ciextern void arch_trigger_cpumask_backtrace(const cpumask_t *mask, 358c2ecf20Sopenharmony_ci bool exclude_self); 368c2ecf20Sopenharmony_ci#define arch_trigger_cpumask_backtrace arch_trigger_cpumask_backtrace 378c2ecf20Sopenharmony_ci#endif 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_cistatic inline int nr_legacy_irqs(void) 408c2ecf20Sopenharmony_ci{ 418c2ecf20Sopenharmony_ci return NR_IRQS_LEGACY; 428c2ecf20Sopenharmony_ci} 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_ci#endif 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci#endif 478c2ecf20Sopenharmony_ci 48