home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / KERNEL-S / V1.2 / LINUX-1.2 / LINUX-1 / linux / include / asm-alpha / irq.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-28  |  1.4 KB  |  55 lines

  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
  55.