2 * arch/arm/include/asm/mach/irq.h
4 * Copyright (C) 1995-2000 Russell King.
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
10 #ifndef __ASM_ARM_MACH_IRQ_H
11 #define __ASM_ARM_MACH_IRQ_H
13 #include <linux/irq.h>
18 * This is internal. Do not use it.
20 extern void init_FIQ(void);
21 extern int show_fiq_list(struct seq_file
*, int);
23 #ifdef CONFIG_MULTI_IRQ_HANDLER
24 extern void (*handle_arch_irq
)(struct pt_regs
*);
28 * This is for easy migration, but should be changed in the source
30 #define do_bad_IRQ(irq,desc) \
32 raw_spin_lock(&desc->lock); \
33 handle_bad_irq(irq, desc); \
34 raw_spin_unlock(&desc->lock); \
39 * Entry/exit functions for chained handlers where the primary IRQ chip
40 * may implement either fasteoi or level-trigger flow control.
42 static inline void chained_irq_enter(struct irq_chip
*chip
,
43 struct irq_desc
*desc
)
45 /* FastEOI controllers require no action on entry. */
49 if (chip
->irq_mask_ack
) {
50 chip
->irq_mask_ack(&desc
->irq_data
);
52 chip
->irq_mask(&desc
->irq_data
);
54 chip
->irq_ack(&desc
->irq_data
);
58 static inline void chained_irq_exit(struct irq_chip
*chip
,
59 struct irq_desc
*desc
)
62 chip
->irq_eoi(&desc
->irq_data
);
64 chip
->irq_unmask(&desc
->irq_data
);