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 36struct pt_regs; 37struct hw_interrupt_type; 38struct 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. */ 45extern void 46init_irq_handlers (int base_irq, int num, int interval, 47 struct hw_interrupt_type *irq_type); 48 49/* Handle interrupt IRQ. REGS are the registers at the time of ther 50 interrupt. */ 51extern unsigned int handle_irq (int irq, struct pt_regs *regs); 52 53 54/* Enable interrupt handling on an irq. */ 55extern void enable_irq(unsigned int irq); 56 57/* Disable an irq and wait for completion. */ 58extern void disable_irq (unsigned int irq); 59 60/* Disable an irq without waiting. */ 61extern void disable_irq_nosync (unsigned int irq); 62 63#endif /* !__ASSEMBLY__ */ 64 65#endif /* __V850_IRQ_H__ */ 66