1 /*
2 * $Id: irq_control.h,v 1.8 1999/09/15 23:58:48 cort Exp $
3 *
4 * Copyright (C) 1999 Cort Dougan <cort@cs.nmt.edu>
5 */
6 #ifdef __KERNEL__
7 #ifndef _PPC_HW_IRQ_H
8 #define _PPC_HW_IRQ_H
9
10 struct int_control_struct
11 {
12 void (*int_cli)(void);
13 void (*int_sti)(void);
14 void (*int_restore_flags)(unsigned long);
15 void (*int_save_flags)(unsigned long *);
16 void (*int_set_lost)(unsigned long);
17 };
18 extern struct int_control_struct int_control;
19 extern unsigned long timer_interrupt_intercept;
20 extern unsigned long do_IRQ_intercept;
21 int timer_interrupt(struct pt_regs *);
22
23 extern void __no_use_sti(void);
24 extern void __no_use_cli(void);
25 extern void __no_use_restore_flags(unsigned long);
26 extern void __no_use_save_flags(unsigned long *);
27 extern void __no_use_set_lost(unsigned long);
28
29 #define __cli() int_control.int_cli()
30 #define __sti() int_control.int_sti()
31 #define __save_flags(flags) int_control.int_save_flags(&flags)
32 #define __restore_flags(flags) int_control.int_restore_flags(flags)
33 #define __save_and_cli(flags) ({__save_flags(flags);__cli();})
34 #define __set_lost(irq) ({ if ((ulong)int_control.int_set_lost) int_control.int_set_lost(irq); })
35
36 extern void do_lost_interrupts(unsigned long);
37 extern atomic_t ppc_n_lost_interrupts;
38
39 #define mask_irq(irq) ({if (irq_desc[irq].handler && irq_desc[irq].handler->disable) irq_desc[irq].handler->disable(irq);})
40 #define unmask_irq(irq) ({if (irq_desc[irq].handler && irq_desc[irq].handler->enable) irq_desc[irq].handler->enable(irq);})
41 #define mask_and_ack_irq(irq) ({if (irq_desc[irq].handler && irq_desc[irq].handler->ack) irq_desc[irq].handler->ack(irq);})
42
43 #endif /* _PPC_HW_IRQ_H */
44 #endif /* __KERNEL__ */
45
This page was automatically generated by the
LXR engine.
Visit the LXR main site for more
information.