5 * linux/include/alpha/irq.h 7 * (C) 1994 Linus Torvalds 10 #include <linux/linkage.h> 11 #include <linux/config.h> 13 #if defined(CONFIG_ALPHA_GENERIC) 15 /* Here NR_IRQS is not exact, but rather an upper bound. This is used 16 many places throughout the kernel to size static arrays. That's ok, 17 we'll use alpha_mv.nr_irqs when we want the real thing. */ 21 #elif defined(CONFIG_ALPHA_CABRIOLET) || \ 22 defined(CONFIG_ALPHA_EB66P) || \ 23 defined(CONFIG_ALPHA_EB164) || \ 24 defined(CONFIG_ALPHA_PC164) || \ 25 defined(CONFIG_ALPHA_LX164) 28 #elif defined(CONFIG_ALPHA_EB66) || \ 29 defined(CONFIG_ALPHA_EB64P) || \ 30 defined(CONFIG_ALPHA_MIKASA) 33 #elif defined(CONFIG_ALPHA_ALCOR) || \ 34 defined(CONFIG_ALPHA_XLT) || \ 35 defined(CONFIG_ALPHA_MIATA) || \ 36 defined(CONFIG_ALPHA_RUFFIAN) || \ 37 defined(CONFIG_ALPHA_RX164) || \ 38 defined(CONFIG_ALPHA_NORITAKE) 41 #elif defined(CONFIG_ALPHA_SABLE) || \ 42 defined(CONFIG_ALPHA_SX164) 45 #elif defined(CONFIG_ALPHA_DP264) || \ 46 defined(CONFIG_ALPHA_RAWHIDE) 49 #elif defined(CONFIG_ALPHA_TAKARA) 52 #else/* everyone else */ 57 * PROBE_MASK is the bitset of irqs that we consider for autoprobing. 60 /* The normal mask includes all the IRQs except the timer. */ 61 #define _PROBE_MASK(nr_irqs) (((1UL << (nr_irqs & 63)) - 1) & ~1UL) 63 /* Mask out unused timer irq 0 and RTC irq 8. */ 64 #define P2K_PROBE_MASK (_PROBE_MASK(16) & ~0x101UL) 66 /* Mask out unused timer irq 0, "irqs" 20-30, and the EISA cascade. */ 67 #define ALCOR_PROBE_MASK (_PROBE_MASK(48) & ~0xfff000000001UL) 69 /* Leave timer irq 0 in the mask. */ 70 #define RUFFIAN_PROBE_MASK (_PROBE_MASK(48) | 1UL) 72 #if defined(CONFIG_ALPHA_GENERIC) 73 # define PROBE_MASK alpha_mv.irq_probe_mask 74 #elif defined(CONFIG_ALPHA_P2K) 75 # define PROBE_MASK P2K_PROBE_MASK 76 #elif defined(CONFIG_ALPHA_ALCOR) || defined(CONFIG_ALPHA_XLT) 77 # define PROBE_MASK ALCOR_PROBE_MASK 78 #elif defined(CONFIG_ALPHA_RUFFIAN) 79 # define PROBE_MASK RUFFIAN_PROBE_MASK 81 # define PROBE_MASK _PROBE_MASK(NR_IRQS) 85 static __inline__
intirq_cannonicalize(int irq
) 88 * XXX is this true for all Alpha's? The old serial driver 89 * did it this way for years without any complaints, so.... 91 return((irq
==2) ?9: irq
); 94 externvoiddisable_irq(unsigned int); 95 externvoiddisable_irq_nosync(unsigned int); 96 externvoidenable_irq(unsigned int); 98 externvoidirq_enter(int cpu
,int irq
); 99 externvoidirq_exit(int cpu
,int irq
); 102 externvoid(*perf_irq
)(unsigned long,struct pt_regs
*); 105 #endif/* _ALPHA_IRQ_H */