162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci#ifndef __ASM_ARM_IRQ_H
362306a36Sopenharmony_ci#define __ASM_ARM_IRQ_H
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci#define NR_IRQS_LEGACY	16
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#ifndef CONFIG_SPARSE_IRQ
862306a36Sopenharmony_ci#include <mach/irqs.h>
962306a36Sopenharmony_ci#else
1062306a36Sopenharmony_ci#define NR_IRQS NR_IRQS_LEGACY
1162306a36Sopenharmony_ci#endif
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#ifndef irq_canonicalize
1462306a36Sopenharmony_ci#define irq_canonicalize(i)	(i)
1562306a36Sopenharmony_ci#endif
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci/*
1862306a36Sopenharmony_ci * Use this value to indicate lack of interrupt
1962306a36Sopenharmony_ci * capability
2062306a36Sopenharmony_ci */
2162306a36Sopenharmony_ci#ifndef NO_IRQ
2262306a36Sopenharmony_ci#define NO_IRQ	((unsigned int)(-1))
2362306a36Sopenharmony_ci#endif
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci#ifndef __ASSEMBLY__
2662306a36Sopenharmony_cistruct irqaction;
2762306a36Sopenharmony_cistruct pt_regs;
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_civoid handle_IRQ(unsigned int, struct pt_regs *);
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci#ifdef CONFIG_SMP
3262306a36Sopenharmony_ci#include <linux/cpumask.h>
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ciextern void arch_trigger_cpumask_backtrace(const cpumask_t *mask,
3562306a36Sopenharmony_ci					   int exclude_cpu);
3662306a36Sopenharmony_ci#define arch_trigger_cpumask_backtrace arch_trigger_cpumask_backtrace
3762306a36Sopenharmony_ci#endif
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_cistatic inline int nr_legacy_irqs(void)
4062306a36Sopenharmony_ci{
4162306a36Sopenharmony_ci	return NR_IRQS_LEGACY;
4262306a36Sopenharmony_ci}
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci#endif
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci#endif
4762306a36Sopenharmony_ci
48