interrupt.s 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. .code32
  2. .text
  3. .globl int6
  4. .type int6 @function
  5. int6:
  6. xchgw %bx, %bx
  7. pushal
  8. call int6_handler
  9. popal
  10. iret
  11. .globl int8
  12. .type int8 @function
  13. int8:
  14. nop
  15. iret
  16. .globl int13
  17. .type int13 @function
  18. int13:
  19. xchgw %bx, %bx
  20. pushal
  21. call int13_handler
  22. popal
  23. # remove the 32bit error code from stack
  24. addl $4, %esp
  25. iret
  26. .globl int14
  27. .type int14 @function
  28. int14:
  29. xchgw %bx, %bx
  30. pushal
  31. movl %cr2, %eax
  32. pushl %eax
  33. call int14_handler
  34. popl %eax
  35. popal
  36. # remove the 32bit error code from stack
  37. addl $4, %esp
  38. iret
  39. .globl irq0
  40. .type irq0 @function
  41. irq0:
  42. pushal
  43. call irq0_handler
  44. popal
  45. iret
  46. .globl irq1
  47. .type irq1 @function
  48. irq1:
  49. pushal
  50. call irq1_handler
  51. popal
  52. iret
  53. .globl irq2
  54. .type irq2 @function
  55. irq2:
  56. pushal
  57. call irq2_handler
  58. popal
  59. iret
  60. .globl irq3
  61. .type irq3 @function
  62. irq3:
  63. pushal
  64. call irq3_handler
  65. popal
  66. iret
  67. .globl irq4
  68. .type irq4 @function
  69. irq4:
  70. pushal
  71. call irq4_handler
  72. popal
  73. iret
  74. .globl irq5
  75. .type irq5 @function
  76. irq5:
  77. pushal
  78. call irq5_handler
  79. popal
  80. iret
  81. .globl irq6
  82. .type irq6 @function
  83. irq6:
  84. pushal
  85. call irq6_handler
  86. popal
  87. iret
  88. .globl irq7
  89. .type irq7 @function
  90. irq7:
  91. pushal
  92. call irq7_handler
  93. popal
  94. iret
  95. .globl irq8
  96. .type irq8 @function
  97. irq8:
  98. pushal
  99. call irq8_handler
  100. popal
  101. iret
  102. .globl irq9
  103. .type irq9 @function
  104. irq9:
  105. pushal
  106. call irq9_handler
  107. popal
  108. iret
  109. .globl irq10
  110. .type irq10 @function
  111. irq10:
  112. pushal
  113. call irq10_handler
  114. popal
  115. iret
  116. .globl irq11
  117. .type irq11 @function
  118. irq11:
  119. pushal
  120. call irq11_handler
  121. popal
  122. iret
  123. .globl irq12
  124. .type irq12 @function
  125. irq12:
  126. pushal
  127. call irq12_handler
  128. popal
  129. iret
  130. .globl irq13
  131. .type irq13 @function
  132. irq13:
  133. pushal
  134. call irq13_handler
  135. popal
  136. iret
  137. .globl irq14
  138. .type irq14 @function
  139. irq14:
  140. pushal
  141. call irq14_handler
  142. popal
  143. iret
  144. .globl irq15
  145. .type irq15 @function
  146. irq15:
  147. pushal
  148. call irq15_handler
  149. popal
  150. iret
  151. .globl asm_load_idt
  152. .type asm_load_idt @function
  153. asm_load_idt:
  154. movl 4(%esp), %edx
  155. lidt (%edx)
  156. movl 8(%esp), %edx
  157. cmpl $0, %edx
  158. je asm_load_idt_skip
  159. sti
  160. asm_load_idt_skip:
  161. ret