1
0

isr.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #ifndef ISR_H
  2. #define ISR_H
  3. #include "type.h"
  4. /* ISRs reserved for CPU exceptions */
  5. extern void isr0();
  6. extern void isr1();
  7. extern void isr2();
  8. extern void isr3();
  9. extern void isr4();
  10. extern void isr5();
  11. extern void isr6();
  12. extern void isr7();
  13. extern void isr8();
  14. extern void isr9();
  15. extern void isr10();
  16. extern void isr11();
  17. extern void isr12();
  18. extern void isr13();
  19. extern void isr14();
  20. extern void isr15();
  21. extern void isr16();
  22. extern void isr17();
  23. extern void isr18();
  24. extern void isr19();
  25. extern void isr20();
  26. extern void isr21();
  27. extern void isr22();
  28. extern void isr23();
  29. extern void isr24();
  30. extern void isr25();
  31. extern void isr26();
  32. extern void isr27();
  33. extern void isr28();
  34. extern void isr29();
  35. extern void isr30();
  36. extern void isr31();
  37. /* IRQ definitions */
  38. extern void irq0();
  39. extern void irq1();
  40. extern void irq2();
  41. extern void irq3();
  42. extern void irq4();
  43. extern void irq5();
  44. extern void irq6();
  45. extern void irq7();
  46. extern void irq8();
  47. extern void irq9();
  48. extern void irq10();
  49. extern void irq11();
  50. extern void irq12();
  51. extern void irq13();
  52. extern void irq14();
  53. extern void irq15();
  54. #define IRQ0 32
  55. #define IRQ1 33
  56. #define IRQ2 34
  57. #define IRQ3 35
  58. #define IRQ4 36
  59. #define IRQ5 37
  60. #define IRQ6 38
  61. #define IRQ7 39
  62. #define IRQ8 40
  63. #define IRQ9 41
  64. #define IRQ10 42
  65. #define IRQ11 43
  66. #define IRQ12 44
  67. #define IRQ13 45
  68. #define IRQ14 46
  69. #define IRQ15 47
  70. /* Struct which aggregates many registers */
  71. typedef struct {
  72. u32 ds; /* Data segment selector */
  73. u32 edi, esi, ebp, esp, ebx, edx, ecx, eax; /* Pushed by pusha. */
  74. u32 int_no, err_code; /* Interrupt number and error code (if applicable) */
  75. u32 eip, cs, eflags, useresp, ss; /* Pushed by the processor automatically */
  76. } registers_t;
  77. void isr_install();
  78. void isr_handler(registers_t r);
  79. void irq_install();
  80. typedef void (*isr_t)(registers_t);
  81. void register_interrupt_handler(u8 n, isr_t handler);
  82. #endif