irq.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #ifndef _ASM_IRQ_H
  2. #define _ASM_IRQ_H
  3. #include <linux/hardirq.h>
  4. #include <linux/percpu.h>
  5. #include <linux/cache.h>
  6. #include <linux/types.h>
  7. enum interruption_main_class {
  8. EXTERNAL_INTERRUPT,
  9. IO_INTERRUPT,
  10. NR_IRQS
  11. };
  12. enum interruption_class {
  13. IRQEXT_CLK,
  14. IRQEXT_EXC,
  15. IRQEXT_EMS,
  16. IRQEXT_TMR,
  17. IRQEXT_TLA,
  18. IRQEXT_PFL,
  19. IRQEXT_DSD,
  20. IRQEXT_VRT,
  21. IRQEXT_SCP,
  22. IRQEXT_IUC,
  23. IRQEXT_CMS,
  24. IRQEXT_CMC,
  25. IRQEXT_CMR,
  26. IRQIO_CIO,
  27. IRQIO_QAI,
  28. IRQIO_DAS,
  29. IRQIO_C15,
  30. IRQIO_C70,
  31. IRQIO_TAP,
  32. IRQIO_VMR,
  33. IRQIO_LCS,
  34. IRQIO_CLW,
  35. IRQIO_CTC,
  36. IRQIO_APB,
  37. IRQIO_ADM,
  38. IRQIO_CSC,
  39. IRQIO_PCI,
  40. IRQIO_MSI,
  41. IRQIO_VIR,
  42. NMI_NMI,
  43. CPU_RST,
  44. NR_ARCH_IRQS
  45. };
  46. struct irq_stat {
  47. unsigned int irqs[NR_ARCH_IRQS];
  48. };
  49. DECLARE_PER_CPU_SHARED_ALIGNED(struct irq_stat, irq_stat);
  50. static __always_inline void inc_irq_stat(enum interruption_class irq)
  51. {
  52. __get_cpu_var(irq_stat).irqs[irq]++;
  53. }
  54. struct ext_code {
  55. unsigned short subcode;
  56. unsigned short code;
  57. };
  58. typedef void (*ext_int_handler_t)(struct ext_code, unsigned int, unsigned long);
  59. int register_external_interrupt(u16 code, ext_int_handler_t handler);
  60. int unregister_external_interrupt(u16 code, ext_int_handler_t handler);
  61. void service_subclass_irq_register(void);
  62. void service_subclass_irq_unregister(void);
  63. void measurement_alert_subclass_register(void);
  64. void measurement_alert_subclass_unregister(void);
  65. #ifdef CONFIG_LOCKDEP
  66. # define disable_irq_nosync_lockdep(irq) disable_irq_nosync(irq)
  67. # define disable_irq_nosync_lockdep_irqsave(irq, flags) \
  68. disable_irq_nosync(irq)
  69. # define disable_irq_lockdep(irq) disable_irq(irq)
  70. # define enable_irq_lockdep(irq) enable_irq(irq)
  71. # define enable_irq_lockdep_irqrestore(irq, flags) \
  72. enable_irq(irq)
  73. #endif
  74. #endif /* _ASM_IRQ_H */