Linux-2.6.12-rc2
[linux-flexiantxendom0-natty.git] / include / asm-v850 / irq.h
1 /*
2  * include/asm-v850/irq.h -- Machine interrupt handling
3  *
4  *  Copyright (C) 2001,02,04  NEC Electronics Corporation
5  *  Copyright (C) 2001,02,04  Miles Bader <miles@gnu.org>
6  *
7  * This file is subject to the terms and conditions of the GNU General
8  * Public License.  See the file COPYING in the main directory of this
9  * archive for more details.
10  *
11  * Written by Miles Bader <miles@gnu.org>
12  */
13
14 #ifndef __V850_IRQ_H__
15 #define __V850_IRQ_H__
16
17 #include <asm/machdep.h>
18
19 /* Default NUM_MACH_IRQS.  */
20 #ifndef NUM_MACH_IRQS
21 #define NUM_MACH_IRQS   NUM_CPU_IRQS
22 #endif
23
24 /* NMIs have IRQ numbers from FIRST_NMI to FIRST_NMI+NUM_NMIS-1.  */
25 #define FIRST_NMI       NUM_MACH_IRQS
26 #define IRQ_NMI(n)      (FIRST_NMI + (n))
27 /* v850 processors have 3 non-maskable interrupts.  */
28 #define NUM_NMIS        3
29
30 /* Includes both maskable and non-maskable irqs.  */
31 #define NR_IRQS         (NUM_MACH_IRQS + NUM_NMIS)
32
33
34 #ifndef __ASSEMBLY__
35
36 struct pt_regs;
37 struct hw_interrupt_type;
38 struct irqaction;
39
40 #define irq_canonicalize(irq)   (irq)
41
42 /* Initialize irq handling for IRQs.
43    BASE_IRQ, BASE_IRQ+INTERVAL, ..., BASE_IRQ+NUM*INTERVAL
44    to IRQ_TYPE.  An IRQ_TYPE of 0 means to use a generic interrupt type.  */
45 extern void
46 init_irq_handlers (int base_irq, int num, int interval,
47                    struct hw_interrupt_type *irq_type);
48
49 typedef void (*irq_handler_t)(int irq, void *data, struct pt_regs *regs);
50
51 /* Handle interrupt IRQ.  REGS are the registers at the time of ther
52    interrupt.  */
53 extern unsigned int handle_irq (int irq, struct pt_regs *regs);
54
55
56 /* Enable interrupt handling on an irq.  */
57 extern void enable_irq(unsigned int irq);
58
59 /* Disable an irq and wait for completion.  */
60 extern void disable_irq (unsigned int irq);
61
62 /* Disable an irq without waiting. */
63 extern void disable_irq_nosync (unsigned int irq);
64
65 extern int handle_IRQ_event(unsigned int, struct pt_regs *, struct irqaction *);
66
67 #endif /* !__ASSEMBLY__ */
68
69 #endif /* __V850_IRQ_H__ */