forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.3 KiB
92 lines
2.3 KiB
/* SPDX-License-Identifier: GPL-2.0 */ |
|
#ifndef _ALPHA_IRQ_H |
|
#define _ALPHA_IRQ_H |
|
|
|
/* |
|
* linux/include/alpha/irq.h |
|
* |
|
* (C) 1994 Linus Torvalds |
|
*/ |
|
|
|
#include <linux/linkage.h> |
|
|
|
#if defined(CONFIG_ALPHA_GENERIC) |
|
|
|
/* Here NR_IRQS is not exact, but rather an upper bound. This is used |
|
many places throughout the kernel to size static arrays. That's ok, |
|
we'll use alpha_mv.nr_irqs when we want the real thing. */ |
|
|
|
/* When LEGACY_START_ADDRESS is selected, we leave out: |
|
TITAN |
|
WILDFIRE |
|
MARVEL |
|
|
|
This helps keep the kernel object size reasonable for the majority |
|
of machines. |
|
*/ |
|
|
|
# if defined(CONFIG_ALPHA_LEGACY_START_ADDRESS) |
|
# define NR_IRQS (128) /* max is RAWHIDE/TAKARA */ |
|
# else |
|
# define NR_IRQS (32768 + 16) /* marvel - 32 pids */ |
|
# endif |
|
|
|
#elif defined(CONFIG_ALPHA_CABRIOLET) || \ |
|
defined(CONFIG_ALPHA_EB66P) || \ |
|
defined(CONFIG_ALPHA_EB164) || \ |
|
defined(CONFIG_ALPHA_PC164) || \ |
|
defined(CONFIG_ALPHA_LX164) |
|
# define NR_IRQS 35 |
|
|
|
#elif defined(CONFIG_ALPHA_EB66) || \ |
|
defined(CONFIG_ALPHA_EB64P) || \ |
|
defined(CONFIG_ALPHA_MIKASA) |
|
# define NR_IRQS 32 |
|
|
|
#elif defined(CONFIG_ALPHA_ALCOR) || \ |
|
defined(CONFIG_ALPHA_MIATA) || \ |
|
defined(CONFIG_ALPHA_RUFFIAN) || \ |
|
defined(CONFIG_ALPHA_RX164) || \ |
|
defined(CONFIG_ALPHA_NORITAKE) |
|
# define NR_IRQS 48 |
|
|
|
#elif defined(CONFIG_ALPHA_SABLE) || \ |
|
defined(CONFIG_ALPHA_SX164) |
|
# define NR_IRQS 40 |
|
|
|
#elif defined(CONFIG_ALPHA_DP264) || \ |
|
defined(CONFIG_ALPHA_LYNX) || \ |
|
defined(CONFIG_ALPHA_SHARK) |
|
# define NR_IRQS 64 |
|
|
|
#elif defined(CONFIG_ALPHA_TITAN) |
|
#define NR_IRQS 80 |
|
|
|
#elif defined(CONFIG_ALPHA_RAWHIDE) || \ |
|
defined(CONFIG_ALPHA_TAKARA) || \ |
|
defined(CONFIG_ALPHA_EIGER) |
|
# define NR_IRQS 128 |
|
|
|
#elif defined(CONFIG_ALPHA_WILDFIRE) |
|
# define NR_IRQS 2048 /* enuff for 8 QBBs */ |
|
|
|
#elif defined(CONFIG_ALPHA_MARVEL) |
|
# define NR_IRQS (32768 + 16) /* marvel - 32 pids*/ |
|
|
|
#else /* everyone else */ |
|
# define NR_IRQS 16 |
|
#endif |
|
|
|
static __inline__ int irq_canonicalize(int irq) |
|
{ |
|
/* |
|
* XXX is this true for all Alpha's? The old serial driver |
|
* did it this way for years without any complaints, so.... |
|
*/ |
|
return ((irq == 2) ? 9 : irq); |
|
} |
|
|
|
struct pt_regs; |
|
extern void (*perf_irq)(unsigned long, struct pt_regs *); |
|
|
|
#endif /* _ALPHA_IRQ_H */
|
|
|