root/include/asm-alpha/irq.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


   1 #ifndef _ALPHA_IRQ_H
   2 #define _ALPHA_IRQ_H
   3 
   4 /*
   5  *      linux/include/alpha/irq.h
   6  *
   7  *      (C) 1994 Linus Torvalds
   8  */
   9 
  10 #include <linux/linkage.h>
  11 
  12 extern void disable_irq(unsigned int);
  13 extern void enable_irq(unsigned int);
  14 
  15 #define __STR(x) #x
  16 #define STR(x) __STR(x)
  17  
  18 #define SAVE_ALL "xx"
  19 
  20 /*
  21  * SAVE_MOST/RESTORE_MOST is used for the faster version of IRQ handlers,
  22  * installed by using the SA_INTERRUPT flag. These kinds of IRQ's don't
  23  * call the routines that do signal handling etc on return, and can have
  24  * more relaxed register-saving etc. They are also atomic, and are thus
  25  * suited for small, fast interrupts like the serial lines or the harddisk
  26  * drivers, which don't actually need signal handling etc.
  27  *
  28  * Also note that we actually save only those registers that are used in
  29  * C subroutines, so if you do something weird, you're on your own. 
  30  */
  31 #define SAVE_MOST "yy"
  32 
  33 #define RESTORE_MOST "zz"
  34 
  35 #define ACK_FIRST(mask) "aa"
  36 
  37 #define ACK_SECOND(mask) "dummy"
  38 
  39 #define UNBLK_FIRST(mask) "dummy"
  40 
  41 #define UNBLK_SECOND(mask) "dummy"
  42 
  43 #define IRQ_NAME2(nr) nr##_interrupt(void)
  44 #define IRQ_NAME(nr) IRQ_NAME2(IRQ##nr)
  45 #define FAST_IRQ_NAME(nr) IRQ_NAME2(fast_IRQ##nr)
  46 #define BAD_IRQ_NAME(nr) IRQ_NAME2(bad_IRQ##nr)
  47         
  48 #define BUILD_IRQ(chip,nr,mask) \
  49 asmlinkage void IRQ_NAME(nr); \
  50 asmlinkage void FAST_IRQ_NAME(nr); \
  51 asmlinkage void BAD_IRQ_NAME(nr); \
  52 asm code comes here
  53 
  54 #endif

/* [previous][next][first][last][top][bottom][index][help] */