92 lines
		
	
	
	
		
			2.3 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			92 lines
		
	
	
	
		
			2.3 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#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) || \
							 | 
						||
| 
								 | 
							
								      defined(CONFIG_ALPHA_EIGER)
							 | 
						||
| 
								 | 
							
								# define NR_IRQS	64
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#elif defined(CONFIG_ALPHA_TITAN)
							 | 
						||
| 
								 | 
							
								#define NR_IRQS		80
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#elif defined(CONFIG_ALPHA_RAWHIDE) || \
							 | 
						||
| 
								 | 
							
									defined(CONFIG_ALPHA_TAKARA)
							 | 
						||
| 
								 | 
							
								# 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 */
							 |