Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at daccff024ffeb21caa2cc479ccc33b2ec50705b1 77 lines 2.0 kB view raw
1/* 2 * This file is subject to the terms and conditions of the GNU General Public 3 * License. See the file "COPYING" in the main directory of this archive 4 * for more details. 5 * 6 * Copyright (C) 1994 by Waldorf GMBH, written by Ralf Baechle 7 * Copyright (C) 1995, 96, 97, 98, 99, 2000, 01, 02, 03 by Ralf Baechle 8 */ 9#ifndef _ASM_IRQ_H 10#define _ASM_IRQ_H 11 12#include <linux/linkage.h> 13 14#include <asm/mipsmtregs.h> 15 16#include <irq.h> 17 18#ifdef CONFIG_I8259 19static inline int irq_canonicalize(int irq) 20{ 21 return ((irq == 2) ? 9 : irq); 22} 23#else 24#define irq_canonicalize(irq) (irq) /* Sane hardware, sane code ... */ 25#endif 26 27extern asmlinkage unsigned int do_IRQ(unsigned int irq); 28 29#ifdef CONFIG_MIPS_MT_SMTC 30/* 31 * Clear interrupt mask handling "backstop" if irq_hwmask 32 * entry so indicates. This implies that the ack() or end() 33 * functions will take over re-enabling the low-level mask. 34 * Otherwise it will be done on return from exception. 35 */ 36#define __DO_IRQ_SMTC_HOOK() \ 37do { \ 38 if (irq_hwmask[irq] & 0x0000ff00) \ 39 write_c0_tccontext(read_c0_tccontext() & \ 40 ~(irq_hwmask[irq] & 0x0000ff00)); \ 41} while (0) 42#else 43#define __DO_IRQ_SMTC_HOOK() do { } while (0) 44#endif 45 46#ifdef CONFIG_PREEMPT 47 48/* 49 * do_IRQ handles all normal device IRQ's (the special 50 * SMP cross-CPU interrupts have their own specific 51 * handlers). 52 * 53 * Ideally there should be away to get this into kernel/irq/handle.c to 54 * avoid the overhead of a call for just a tiny function ... 55 */ 56#define do_IRQ(irq) \ 57do { \ 58 irq_enter(); \ 59 __DO_IRQ_SMTC_HOOK(); \ 60 __do_IRQ((irq)); \ 61 irq_exit(); \ 62} while (0) 63 64#endif 65 66extern void arch_init_irq(void); 67extern void spurious_interrupt(void); 68 69#ifdef CONFIG_MIPS_MT_SMTC 70struct irqaction; 71 72extern unsigned long irq_hwmask[]; 73extern int setup_irq_smtc(unsigned int irq, struct irqaction * new, 74 unsigned long hwmask); 75#endif /* CONFIG_MIPS_MT_SMTC */ 76 77#endif /* _ASM_IRQ_H */