| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * linux/arch/m32r/kernel/irq.c | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *  Copyright (c) 2003, 2004  Hitoshi Yamamoto | 
					
						
							|  |  |  |  *  Copyright (c) 2004  Hirokazu Takata <takata at linux-m32r.org> | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*
 | 
					
						
							|  |  |  |  *	linux/arch/i386/kernel/irq.c | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *	Copyright (C) 1992, 1998 Linus Torvalds, Ingo Molnar | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This file contains the lowest level m32r-specific interrupt | 
					
						
							|  |  |  |  * entry and irq statistics code. All the remaining irq logic is | 
					
						
							|  |  |  |  * done by the generic kernel/irq/ code and in the | 
					
						
							|  |  |  |  * m32r-specific irq controller code. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <linux/kernel_stat.h>
 | 
					
						
							|  |  |  | #include <linux/interrupt.h>
 | 
					
						
							|  |  |  | #include <linux/module.h>
 | 
					
						
							|  |  |  | #include <asm/uaccess.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2007-10-20 01:14:39 +02:00
										 |  |  |  * do_IRQ handles all normal device IRQs (the special | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  |  * SMP cross-CPU interrupts have their own specific | 
					
						
							|  |  |  |  * handlers). | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | asmlinkage unsigned int do_IRQ(int irq, struct pt_regs *regs) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2006-10-07 16:29:18 +01:00
										 |  |  | 	struct pt_regs *old_regs; | 
					
						
							|  |  |  | 	old_regs = set_irq_regs(regs); | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	irq_enter(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef CONFIG_DEBUG_STACKOVERFLOW
 | 
					
						
							|  |  |  | 	/* FIXME M32R */ | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2011-02-05 21:39:28 +01:00
										 |  |  | 	generic_handle_irq(irq); | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	irq_exit(); | 
					
						
							| 
									
										
										
										
											2006-10-07 16:29:18 +01:00
										 |  |  | 	set_irq_regs(old_regs); | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	return 1; | 
					
						
							|  |  |  | } |