Advertisement
Guest User

isr.c

a guest
Sep 1st, 2023
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 30.86 KB | None | 0 0
  1. #include "include/isr.h"
  2. #include "include/idt.h"
  3. char *exception_messages[] = {
  4.     "Division by Zero",
  5.     "Debug",
  6.     "Non-Maskable Interrupt",
  7.     "Breakpoint",
  8.     "Overflow",
  9.     "Out of Bounds",
  10.     "Invalid Opcode",
  11.     "No Coprocessor",
  12.  
  13.     "Double Fault",
  14.     "Coprocessor Segment Overrun",
  15.     "Bat TSS",
  16.     "Segment not Present",
  17.     "Stack Fault",
  18.     "General Protection Fault",
  19.     "Page Fault",
  20.     "Unknown Interrupt",
  21.  
  22.     "Coprocessor Fault",
  23.     "Alignment Check",
  24.     "Reserved",
  25.     "Reserved",
  26.     "Reserved",
  27.     "Reserved",
  28.     "Reserved",
  29.  
  30.     "Reserved",
  31.     "Reserved",
  32.     "Reserved",
  33.     "Reserved",
  34.     "Reserved",
  35.     "Reserved",
  36.     "Reserved",
  37.     "Reserved"
  38. };
  39. #include "include/idt.h"
  40.  
  41. void __attribute((cdecl)) X64_ISR0();
  42. void __attribute((cdecl)) X64_ISR1();
  43. void __attribute((cdecl)) X64_ISR2();
  44. void __attribute((cdecl)) X64_ISR3();
  45. void __attribute((cdecl)) X64_ISR4();
  46. void __attribute((cdecl)) X64_ISR5();
  47. void __attribute((cdecl)) X64_ISR6();
  48. void __attribute((cdecl)) X64_ISR7();
  49. void __attribute((cdecl)) X64_ISR8();
  50. void __attribute((cdecl)) X64_ISR9();
  51. void __attribute((cdecl)) X64_ISR10();
  52. void __attribute((cdecl)) X64_ISR11();
  53. void __attribute((cdecl)) X64_ISR12();
  54. void __attribute((cdecl)) X64_ISR13();
  55. void __attribute((cdecl)) X64_ISR14();
  56. void __attribute((cdecl)) X64_ISR15();
  57. void __attribute((cdecl)) X64_ISR16();
  58. void __attribute((cdecl)) X64_ISR17();
  59. void __attribute((cdecl)) X64_ISR18();
  60. void __attribute((cdecl)) X64_ISR19();
  61. void __attribute((cdecl)) X64_ISR20();
  62. void __attribute((cdecl)) X64_ISR21();
  63. void __attribute((cdecl)) X64_ISR22();
  64. void __attribute((cdecl)) X64_ISR23();
  65. void __attribute((cdecl)) X64_ISR24();
  66. void __attribute((cdecl)) X64_ISR25();
  67. void __attribute((cdecl)) X64_ISR26();
  68. void __attribute((cdecl)) X64_ISR27();
  69. void __attribute((cdecl)) X64_ISR28();
  70. void __attribute((cdecl)) X64_ISR29();
  71. void __attribute((cdecl)) X64_ISR30();
  72. void __attribute((cdecl)) X64_ISR31();
  73. void __attribute((cdecl)) X64_ISR32();
  74. void __attribute((cdecl)) X64_ISR33();
  75. void __attribute((cdecl)) X64_ISR34();
  76. void __attribute((cdecl)) X64_ISR35();
  77. void __attribute((cdecl)) X64_ISR36();
  78. void __attribute((cdecl)) X64_ISR37();
  79. void __attribute((cdecl)) X64_ISR38();
  80. void __attribute((cdecl)) X64_ISR39();
  81. void __attribute((cdecl)) X64_ISR40();
  82. void __attribute((cdecl)) X64_ISR41();
  83. void __attribute((cdecl)) X64_ISR42();
  84. void __attribute((cdecl)) X64_ISR43();
  85. void __attribute((cdecl)) X64_ISR44();
  86. void __attribute((cdecl)) X64_ISR45();
  87. void __attribute((cdecl)) X64_ISR46();
  88. void __attribute((cdecl)) X64_ISR47();
  89. void __attribute((cdecl)) X64_ISR48();
  90. void __attribute((cdecl)) X64_ISR49();
  91. void __attribute((cdecl)) X64_ISR50();
  92. void __attribute((cdecl)) X64_ISR51();
  93. void __attribute((cdecl)) X64_ISR52();
  94. void __attribute((cdecl)) X64_ISR53();
  95. void __attribute((cdecl)) X64_ISR54();
  96. void __attribute((cdecl)) X64_ISR55();
  97. void __attribute((cdecl)) X64_ISR56();
  98. void __attribute((cdecl)) X64_ISR57();
  99. void __attribute((cdecl)) X64_ISR58();
  100. void __attribute((cdecl)) X64_ISR59();
  101. void __attribute((cdecl)) X64_ISR60();
  102. void __attribute((cdecl)) X64_ISR61();
  103. void __attribute((cdecl)) X64_ISR62();
  104. void __attribute((cdecl)) X64_ISR63();
  105. void __attribute((cdecl)) X64_ISR64();
  106. void __attribute((cdecl)) X64_ISR65();
  107. void __attribute((cdecl)) X64_ISR66();
  108. void __attribute((cdecl)) X64_ISR67();
  109. void __attribute((cdecl)) X64_ISR68();
  110. void __attribute((cdecl)) X64_ISR69();
  111. void __attribute((cdecl)) X64_ISR70();
  112. void __attribute((cdecl)) X64_ISR71();
  113. void __attribute((cdecl)) X64_ISR72();
  114. void __attribute((cdecl)) X64_ISR73();
  115. void __attribute((cdecl)) X64_ISR74();
  116. void __attribute((cdecl)) X64_ISR75();
  117. void __attribute((cdecl)) X64_ISR76();
  118. void __attribute((cdecl)) X64_ISR77();
  119. void __attribute((cdecl)) X64_ISR78();
  120. void __attribute((cdecl)) X64_ISR79();
  121. void __attribute((cdecl)) X64_ISR80();
  122. void __attribute((cdecl)) X64_ISR81();
  123. void __attribute((cdecl)) X64_ISR82();
  124. void __attribute((cdecl)) X64_ISR83();
  125. void __attribute((cdecl)) X64_ISR84();
  126. void __attribute((cdecl)) X64_ISR85();
  127. void __attribute((cdecl)) X64_ISR86();
  128. void __attribute((cdecl)) X64_ISR87();
  129. void __attribute((cdecl)) X64_ISR88();
  130. void __attribute((cdecl)) X64_ISR89();
  131. void __attribute((cdecl)) X64_ISR90();
  132. void __attribute((cdecl)) X64_ISR91();
  133. void __attribute((cdecl)) X64_ISR92();
  134. void __attribute((cdecl)) X64_ISR93();
  135. void __attribute((cdecl)) X64_ISR94();
  136. void __attribute((cdecl)) X64_ISR95();
  137. void __attribute((cdecl)) X64_ISR96();
  138. void __attribute((cdecl)) X64_ISR97();
  139. void __attribute((cdecl)) X64_ISR98();
  140. void __attribute((cdecl)) X64_ISR99();
  141. void __attribute((cdecl)) X64_ISR100();
  142. void __attribute((cdecl)) X64_ISR101();
  143. void __attribute((cdecl)) X64_ISR102();
  144. void __attribute((cdecl)) X64_ISR103();
  145. void __attribute((cdecl)) X64_ISR104();
  146. void __attribute((cdecl)) X64_ISR105();
  147. void __attribute((cdecl)) X64_ISR106();
  148. void __attribute((cdecl)) X64_ISR107();
  149. void __attribute((cdecl)) X64_ISR108();
  150. void __attribute((cdecl)) X64_ISR109();
  151. void __attribute((cdecl)) X64_ISR110();
  152. void __attribute((cdecl)) X64_ISR111();
  153. void __attribute((cdecl)) X64_ISR112();
  154. void __attribute((cdecl)) X64_ISR113();
  155. void __attribute((cdecl)) X64_ISR114();
  156. void __attribute((cdecl)) X64_ISR115();
  157. void __attribute((cdecl)) X64_ISR116();
  158. void __attribute((cdecl)) X64_ISR117();
  159. void __attribute((cdecl)) X64_ISR118();
  160. void __attribute((cdecl)) X64_ISR119();
  161. void __attribute((cdecl)) X64_ISR120();
  162. void __attribute((cdecl)) X64_ISR121();
  163. void __attribute((cdecl)) X64_ISR122();
  164. void __attribute((cdecl)) X64_ISR123();
  165. void __attribute((cdecl)) X64_ISR124();
  166. void __attribute((cdecl)) X64_ISR125();
  167. void __attribute((cdecl)) X64_ISR126();
  168. void __attribute((cdecl)) X64_ISR127();
  169. void __attribute((cdecl)) X64_ISR128();
  170. void __attribute((cdecl)) X64_ISR129();
  171. void __attribute((cdecl)) X64_ISR130();
  172. void __attribute((cdecl)) X64_ISR131();
  173. void __attribute((cdecl)) X64_ISR132();
  174. void __attribute((cdecl)) X64_ISR133();
  175. void __attribute((cdecl)) X64_ISR134();
  176. void __attribute((cdecl)) X64_ISR135();
  177. void __attribute((cdecl)) X64_ISR136();
  178. void __attribute((cdecl)) X64_ISR137();
  179. void __attribute((cdecl)) X64_ISR138();
  180. void __attribute((cdecl)) X64_ISR139();
  181. void __attribute((cdecl)) X64_ISR140();
  182. void __attribute((cdecl)) X64_ISR141();
  183. void __attribute((cdecl)) X64_ISR142();
  184. void __attribute((cdecl)) X64_ISR143();
  185. void __attribute((cdecl)) X64_ISR144();
  186. void __attribute((cdecl)) X64_ISR145();
  187. void __attribute((cdecl)) X64_ISR146();
  188. void __attribute((cdecl)) X64_ISR147();
  189. void __attribute((cdecl)) X64_ISR148();
  190. void __attribute((cdecl)) X64_ISR149();
  191. void __attribute((cdecl)) X64_ISR150();
  192. void __attribute((cdecl)) X64_ISR151();
  193. void __attribute((cdecl)) X64_ISR152();
  194. void __attribute((cdecl)) X64_ISR153();
  195. void __attribute((cdecl)) X64_ISR154();
  196. void __attribute((cdecl)) X64_ISR155();
  197. void __attribute((cdecl)) X64_ISR156();
  198. void __attribute((cdecl)) X64_ISR157();
  199. void __attribute((cdecl)) X64_ISR158();
  200. void __attribute((cdecl)) X64_ISR159();
  201. void __attribute((cdecl)) X64_ISR160();
  202. void __attribute((cdecl)) X64_ISR161();
  203. void __attribute((cdecl)) X64_ISR162();
  204. void __attribute((cdecl)) X64_ISR163();
  205. void __attribute((cdecl)) X64_ISR164();
  206. void __attribute((cdecl)) X64_ISR165();
  207. void __attribute((cdecl)) X64_ISR166();
  208. void __attribute((cdecl)) X64_ISR167();
  209. void __attribute((cdecl)) X64_ISR168();
  210. void __attribute((cdecl)) X64_ISR169();
  211. void __attribute((cdecl)) X64_ISR170();
  212. void __attribute((cdecl)) X64_ISR171();
  213. void __attribute((cdecl)) X64_ISR172();
  214. void __attribute((cdecl)) X64_ISR173();
  215. void __attribute((cdecl)) X64_ISR174();
  216. void __attribute((cdecl)) X64_ISR175();
  217. void __attribute((cdecl)) X64_ISR176();
  218. void __attribute((cdecl)) X64_ISR177();
  219. void __attribute((cdecl)) X64_ISR178();
  220. void __attribute((cdecl)) X64_ISR179();
  221. void __attribute((cdecl)) X64_ISR180();
  222. void __attribute((cdecl)) X64_ISR181();
  223. void __attribute((cdecl)) X64_ISR182();
  224. void __attribute((cdecl)) X64_ISR183();
  225. void __attribute((cdecl)) X64_ISR184();
  226. void __attribute((cdecl)) X64_ISR185();
  227. void __attribute((cdecl)) X64_ISR186();
  228. void __attribute((cdecl)) X64_ISR187();
  229. void __attribute((cdecl)) X64_ISR188();
  230. void __attribute((cdecl)) X64_ISR189();
  231. void __attribute((cdecl)) X64_ISR190();
  232. void __attribute((cdecl)) X64_ISR191();
  233. void __attribute((cdecl)) X64_ISR192();
  234. void __attribute((cdecl)) X64_ISR193();
  235. void __attribute((cdecl)) X64_ISR194();
  236. void __attribute((cdecl)) X64_ISR195();
  237. void __attribute((cdecl)) X64_ISR196();
  238. void __attribute((cdecl)) X64_ISR197();
  239. void __attribute((cdecl)) X64_ISR198();
  240. void __attribute((cdecl)) X64_ISR199();
  241. void __attribute((cdecl)) X64_ISR200();
  242. void __attribute((cdecl)) X64_ISR201();
  243. void __attribute((cdecl)) X64_ISR202();
  244. void __attribute((cdecl)) X64_ISR203();
  245. void __attribute((cdecl)) X64_ISR204();
  246. void __attribute((cdecl)) X64_ISR205();
  247. void __attribute((cdecl)) X64_ISR206();
  248. void __attribute((cdecl)) X64_ISR207();
  249. void __attribute((cdecl)) X64_ISR208();
  250. void __attribute((cdecl)) X64_ISR209();
  251. void __attribute((cdecl)) X64_ISR210();
  252. void __attribute((cdecl)) X64_ISR211();
  253. void __attribute((cdecl)) X64_ISR212();
  254. void __attribute((cdecl)) X64_ISR213();
  255. void __attribute((cdecl)) X64_ISR214();
  256. void __attribute((cdecl)) X64_ISR215();
  257. void __attribute((cdecl)) X64_ISR216();
  258. void __attribute((cdecl)) X64_ISR217();
  259. void __attribute((cdecl)) X64_ISR218();
  260. void __attribute((cdecl)) X64_ISR219();
  261. void __attribute((cdecl)) X64_ISR220();
  262. void __attribute((cdecl)) X64_ISR221();
  263. void __attribute((cdecl)) X64_ISR222();
  264. void __attribute((cdecl)) X64_ISR223();
  265. void __attribute((cdecl)) X64_ISR224();
  266. void __attribute((cdecl)) X64_ISR225();
  267. void __attribute((cdecl)) X64_ISR226();
  268. void __attribute((cdecl)) X64_ISR227();
  269. void __attribute((cdecl)) X64_ISR228();
  270. void __attribute((cdecl)) X64_ISR229();
  271. void __attribute((cdecl)) X64_ISR230();
  272. void __attribute((cdecl)) X64_ISR231();
  273. void __attribute((cdecl)) X64_ISR232();
  274. void __attribute((cdecl)) X64_ISR233();
  275. void __attribute((cdecl)) X64_ISR234();
  276. void __attribute((cdecl)) X64_ISR235();
  277. void __attribute((cdecl)) X64_ISR236();
  278. void __attribute((cdecl)) X64_ISR237();
  279. void __attribute((cdecl)) X64_ISR238();
  280. void __attribute((cdecl)) X64_ISR239();
  281. void __attribute((cdecl)) X64_ISR240();
  282. void __attribute((cdecl)) X64_ISR241();
  283. void __attribute((cdecl)) X64_ISR242();
  284. void __attribute((cdecl)) X64_ISR243();
  285. void __attribute((cdecl)) X64_ISR244();
  286. void __attribute((cdecl)) X64_ISR245();
  287. void __attribute((cdecl)) X64_ISR246();
  288. void __attribute((cdecl)) X64_ISR247();
  289. void __attribute((cdecl)) X64_ISR248();
  290. void __attribute((cdecl)) X64_ISR249();
  291. void __attribute((cdecl)) X64_ISR250();
  292. void __attribute((cdecl)) X64_ISR251();
  293. void __attribute((cdecl)) X64_ISR252();
  294. void __attribute((cdecl)) X64_ISR253();
  295. void __attribute((cdecl)) X64_ISR254();
  296. void __attribute((cdecl)) X64_ISR255();
  297.  
  298. #include "kstdio.h"
  299. void IsrInstallGates() {
  300.     printf("aa\n");
  301.     IDT_SetGate(0, X64_ISR0,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  302.     IDT_SetGate(1, X64_ISR1,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  303.     IDT_SetGate(2, X64_ISR2,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  304.     IDT_SetGate(3, X64_ISR3,  IDT_FLAG_RING0);
  305.     IDT_SetGate(4, X64_ISR4,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  306.     IDT_SetGate(5, X64_ISR5,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  307.     IDT_SetGate(6, X64_ISR6,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  308.     IDT_SetGate(7, X64_ISR7,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  309.     IDT_SetGate(8, X64_ISR8,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  310.     IDT_SetGate(9, X64_ISR9,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  311.     IDT_SetGate(10, X64_ISR10,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  312.     IDT_SetGate(11, X64_ISR11,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  313.     IDT_SetGate(12, X64_ISR12,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  314.     IDT_SetGate(13, X64_ISR13,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  315.     IDT_SetGate(14, X64_ISR14,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  316.     IDT_SetGate(15, X64_ISR15,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  317.     IDT_SetGate(16, X64_ISR16,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  318.     IDT_SetGate(17, X64_ISR17,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  319.     IDT_SetGate(18, X64_ISR18,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  320.     IDT_SetGate(19, X64_ISR19,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  321.     IDT_SetGate(20, X64_ISR20,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  322.     IDT_SetGate(21, X64_ISR21,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  323.     IDT_SetGate(22, X64_ISR22,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  324.     IDT_SetGate(23, X64_ISR23,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  325.     IDT_SetGate(24, X64_ISR24,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  326.     IDT_SetGate(25, X64_ISR25,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  327.     IDT_SetGate(26, X64_ISR26,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  328.     IDT_SetGate(27, X64_ISR27,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  329.     IDT_SetGate(28, X64_ISR28,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  330.     IDT_SetGate(29, X64_ISR29,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  331.     IDT_SetGate(30, X64_ISR30,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  332.     IDT_SetGate(31, X64_ISR31,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  333.     IDT_SetGate(32, X64_ISR32,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  334.     IDT_SetGate(33, X64_ISR33,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  335.     IDT_SetGate(34, X64_ISR34,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  336.     IDT_SetGate(35, X64_ISR35,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  337.     IDT_SetGate(36, X64_ISR36,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  338.     IDT_SetGate(37, X64_ISR37,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  339.     IDT_SetGate(38, X64_ISR38,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  340.     IDT_SetGate(39, X64_ISR39,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  341.     IDT_SetGate(40, X64_ISR40,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  342.     IDT_SetGate(41, X64_ISR41,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  343.     IDT_SetGate(42, X64_ISR42,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  344.     IDT_SetGate(43, X64_ISR43,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  345.     IDT_SetGate(44, X64_ISR44,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  346.     IDT_SetGate(45, X64_ISR45,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  347.     IDT_SetGate(46, X64_ISR46,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  348.     IDT_SetGate(47, X64_ISR47,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  349.     IDT_SetGate(48, X64_ISR48,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  350.     IDT_SetGate(49, X64_ISR49,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  351.     IDT_SetGate(50, X64_ISR50,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  352.     IDT_SetGate(51, X64_ISR51,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  353.     IDT_SetGate(52, X64_ISR52,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  354.     IDT_SetGate(53, X64_ISR53,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  355.     IDT_SetGate(54, X64_ISR54,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  356.     IDT_SetGate(55, X64_ISR55,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  357.     IDT_SetGate(56, X64_ISR56,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  358.     IDT_SetGate(57, X64_ISR57,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  359.     IDT_SetGate(58, X64_ISR58,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  360.     IDT_SetGate(59, X64_ISR59,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  361.     IDT_SetGate(60, X64_ISR60,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  362.     IDT_SetGate(61, X64_ISR61,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  363.     IDT_SetGate(62, X64_ISR62,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  364.     IDT_SetGate(63, X64_ISR63,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  365.     IDT_SetGate(64, X64_ISR64,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  366.     IDT_SetGate(65, X64_ISR65,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  367.     IDT_SetGate(66, X64_ISR66,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  368.     IDT_SetGate(67, X64_ISR67,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  369.     IDT_SetGate(68, X64_ISR68,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  370.     IDT_SetGate(69, X64_ISR69,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  371.     IDT_SetGate(70, X64_ISR70,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  372.     IDT_SetGate(71, X64_ISR71,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  373.     IDT_SetGate(72, X64_ISR72,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  374.     IDT_SetGate(73, X64_ISR73,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  375.     IDT_SetGate(74, X64_ISR74,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  376.     IDT_SetGate(75, X64_ISR75,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  377.     IDT_SetGate(76, X64_ISR76,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  378.     IDT_SetGate(77, X64_ISR77,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  379.     IDT_SetGate(78, X64_ISR78,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  380.     IDT_SetGate(79, X64_ISR79,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  381.     IDT_SetGate(80, X64_ISR80,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  382.     IDT_SetGate(81, X64_ISR81,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  383.     IDT_SetGate(82, X64_ISR82,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  384.     IDT_SetGate(83, X64_ISR83,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  385.     IDT_SetGate(84, X64_ISR84,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  386.     IDT_SetGate(85, X64_ISR85,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  387.     IDT_SetGate(86, X64_ISR86,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  388.     IDT_SetGate(87, X64_ISR87,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  389.     IDT_SetGate(88, X64_ISR88,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  390.     IDT_SetGate(89, X64_ISR89,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  391.     IDT_SetGate(90, X64_ISR90,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  392.     IDT_SetGate(91, X64_ISR91,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  393.     IDT_SetGate(92, X64_ISR92,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  394.     IDT_SetGate(93, X64_ISR93,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  395.     IDT_SetGate(94, X64_ISR94,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  396.     IDT_SetGate(95, X64_ISR95,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  397.     IDT_SetGate(96, X64_ISR96,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  398.     IDT_SetGate(97, X64_ISR97,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  399.     IDT_SetGate(98, X64_ISR98,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  400.     IDT_SetGate(99, X64_ISR99,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  401.     IDT_SetGate(100, X64_ISR100,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  402.     IDT_SetGate(101, X64_ISR101,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  403.     IDT_SetGate(102, X64_ISR102,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  404.     IDT_SetGate(103, X64_ISR103,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  405.     IDT_SetGate(104, X64_ISR104,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  406.     IDT_SetGate(105, X64_ISR105,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  407.     IDT_SetGate(106, X64_ISR106,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  408.     IDT_SetGate(107, X64_ISR107,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  409.     IDT_SetGate(108, X64_ISR108,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  410.     IDT_SetGate(109, X64_ISR109,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  411.     IDT_SetGate(110, X64_ISR110,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  412.     IDT_SetGate(111, X64_ISR111,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  413.     IDT_SetGate(112, X64_ISR112,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  414.     IDT_SetGate(113, X64_ISR113,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  415.     IDT_SetGate(114, X64_ISR114,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  416.     IDT_SetGate(115, X64_ISR115,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  417.     IDT_SetGate(116, X64_ISR116,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  418.     IDT_SetGate(117, X64_ISR117,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  419.     IDT_SetGate(118, X64_ISR118,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  420.     IDT_SetGate(119, X64_ISR119,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  421.     IDT_SetGate(120, X64_ISR120,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  422.     IDT_SetGate(121, X64_ISR121,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  423.     IDT_SetGate(122, X64_ISR122,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  424.     IDT_SetGate(123, X64_ISR123,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  425.     IDT_SetGate(124, X64_ISR124,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  426.     IDT_SetGate(125, X64_ISR125,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  427.     IDT_SetGate(126, X64_ISR126,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  428.     IDT_SetGate(127, X64_ISR127,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  429.  
  430.  
  431.     //syscall 0x80
  432.     IDT_SetGate(128, X64_ISR128,  IDT_FLAG_RING0| IDT_FLAG_RING3 | IDT_FLAG_GATE_64BIT_INT);
  433.    
  434.    
  435.    
  436.    
  437.     IDT_SetGate(129, X64_ISR129,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  438.     IDT_SetGate(130, X64_ISR130,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  439.     IDT_SetGate(131, X64_ISR131,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  440.     IDT_SetGate(132, X64_ISR132,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  441.     IDT_SetGate(133, X64_ISR133,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  442.     IDT_SetGate(134, X64_ISR134,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  443.     IDT_SetGate(135, X64_ISR135,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  444.     IDT_SetGate(136, X64_ISR136,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  445.     IDT_SetGate(137, X64_ISR137,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  446.     IDT_SetGate(138, X64_ISR138,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  447.     IDT_SetGate(139, X64_ISR139,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  448.     IDT_SetGate(140, X64_ISR140,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  449.     IDT_SetGate(141, X64_ISR141,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  450.     IDT_SetGate(142, X64_ISR142,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  451.     IDT_SetGate(143, X64_ISR143,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  452.     IDT_SetGate(144, X64_ISR144,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  453.     IDT_SetGate(145, X64_ISR145,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  454.     IDT_SetGate(146, X64_ISR146,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  455.     IDT_SetGate(147, X64_ISR147,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  456.     IDT_SetGate(148, X64_ISR148,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  457.     IDT_SetGate(149, X64_ISR149,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  458.     IDT_SetGate(150, X64_ISR150,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  459.     IDT_SetGate(151, X64_ISR151,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  460.     IDT_SetGate(152, X64_ISR152,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  461.     IDT_SetGate(153, X64_ISR153,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  462.     IDT_SetGate(154, X64_ISR154,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  463.     IDT_SetGate(155, X64_ISR155,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  464.     IDT_SetGate(156, X64_ISR156,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  465.     IDT_SetGate(157, X64_ISR157,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  466.     IDT_SetGate(158, X64_ISR158,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  467.     IDT_SetGate(159, X64_ISR159,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  468.     IDT_SetGate(160, X64_ISR160,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  469.     IDT_SetGate(161, X64_ISR161,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  470.     IDT_SetGate(162, X64_ISR162,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  471.     IDT_SetGate(163, X64_ISR163,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  472.     IDT_SetGate(164, X64_ISR164,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  473.     IDT_SetGate(165, X64_ISR165,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  474.     IDT_SetGate(166, X64_ISR166,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  475.     IDT_SetGate(167, X64_ISR167,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  476.     IDT_SetGate(168, X64_ISR168,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  477.     IDT_SetGate(169, X64_ISR169,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  478.     IDT_SetGate(170, X64_ISR170,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  479.     IDT_SetGate(171, X64_ISR171,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  480.     IDT_SetGate(172, X64_ISR172,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  481.     IDT_SetGate(173, X64_ISR173,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  482.     IDT_SetGate(174, X64_ISR174,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  483.     IDT_SetGate(175, X64_ISR175,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  484.     IDT_SetGate(176, X64_ISR176,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  485.     IDT_SetGate(177, X64_ISR177,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  486.     IDT_SetGate(178, X64_ISR178,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  487.     IDT_SetGate(179, X64_ISR179,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  488.     IDT_SetGate(180, X64_ISR180,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  489.     IDT_SetGate(181, X64_ISR181,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  490.     IDT_SetGate(182, X64_ISR182,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  491.     IDT_SetGate(183, X64_ISR183,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  492.     IDT_SetGate(184, X64_ISR184,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  493.     IDT_SetGate(185, X64_ISR185,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  494.     IDT_SetGate(186, X64_ISR186,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  495.     IDT_SetGate(187, X64_ISR187,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  496.     IDT_SetGate(188, X64_ISR188,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  497.     IDT_SetGate(189, X64_ISR189,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  498.     IDT_SetGate(190, X64_ISR190,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  499.     IDT_SetGate(191, X64_ISR191,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  500.     IDT_SetGate(192, X64_ISR192,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  501.     IDT_SetGate(193, X64_ISR193,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  502.     IDT_SetGate(194, X64_ISR194,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  503.     IDT_SetGate(195, X64_ISR195,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  504.     IDT_SetGate(196, X64_ISR196,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  505.     IDT_SetGate(197, X64_ISR197,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  506.     IDT_SetGate(198, X64_ISR198,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  507.     IDT_SetGate(199, X64_ISR199,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  508.     IDT_SetGate(200, X64_ISR200,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  509.     IDT_SetGate(201, X64_ISR201,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  510.     IDT_SetGate(202, X64_ISR202,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  511.     IDT_SetGate(203, X64_ISR203,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  512.     IDT_SetGate(204, X64_ISR204,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  513.     IDT_SetGate(205, X64_ISR205,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  514.     IDT_SetGate(206, X64_ISR206,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  515.     IDT_SetGate(207, X64_ISR207,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  516.     IDT_SetGate(208, X64_ISR208,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  517.     IDT_SetGate(209, X64_ISR209,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  518.     IDT_SetGate(210, X64_ISR210,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  519.     IDT_SetGate(211, X64_ISR211,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  520.     IDT_SetGate(212, X64_ISR212,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  521.     IDT_SetGate(213, X64_ISR213,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  522.     IDT_SetGate(214, X64_ISR214,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  523.     IDT_SetGate(215, X64_ISR215,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  524.     IDT_SetGate(216, X64_ISR216,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  525.     IDT_SetGate(217, X64_ISR217,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  526.     IDT_SetGate(218, X64_ISR218,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  527.     IDT_SetGate(219, X64_ISR219,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  528.     IDT_SetGate(220, X64_ISR220,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  529.     IDT_SetGate(221, X64_ISR221,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  530.     IDT_SetGate(222, X64_ISR222,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  531.     IDT_SetGate(223, X64_ISR223,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  532.     IDT_SetGate(224, X64_ISR224,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  533.     IDT_SetGate(225, X64_ISR225,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  534.     IDT_SetGate(226, X64_ISR226,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  535.     IDT_SetGate(227, X64_ISR227,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  536.     IDT_SetGate(228, X64_ISR228,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  537.     IDT_SetGate(229, X64_ISR229,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  538.     IDT_SetGate(230, X64_ISR230,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  539.     IDT_SetGate(231, X64_ISR231,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  540.     IDT_SetGate(232, X64_ISR232,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  541.     IDT_SetGate(233, X64_ISR233,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  542.     IDT_SetGate(234, X64_ISR234,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  543.     IDT_SetGate(235, X64_ISR235,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  544.     IDT_SetGate(236, X64_ISR236,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  545.     IDT_SetGate(237, X64_ISR237,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  546.     IDT_SetGate(238, X64_ISR238,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  547.     IDT_SetGate(239, X64_ISR239,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  548.     IDT_SetGate(240, X64_ISR240,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  549.     IDT_SetGate(241, X64_ISR241,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  550.     IDT_SetGate(242, X64_ISR242,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  551.     IDT_SetGate(243, X64_ISR243,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  552.     IDT_SetGate(244, X64_ISR244,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  553.     IDT_SetGate(245, X64_ISR245,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  554.     IDT_SetGate(246, X64_ISR246,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  555.     IDT_SetGate(247, X64_ISR247,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  556.     IDT_SetGate(248, X64_ISR248,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  557.     IDT_SetGate(249, X64_ISR249,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  558.     IDT_SetGate(250, X64_ISR250,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  559.     IDT_SetGate(251, X64_ISR251,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  560.     IDT_SetGate(252, X64_ISR252,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  561.     IDT_SetGate(253, X64_ISR253,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  562.     IDT_SetGate(254, X64_ISR254,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  563.     IDT_SetGate(255, X64_ISR255,  IDT_FLAG_RING0 | IDT_FLAG_GATE_64BIT_INT);
  564.  
  565.    
  566.  
  567.    // __asm__ volatile("sti");
  568.  
  569.  
  570.  
  571.  
  572. }
  573. void ISR_Init() {
  574.     IsrInstallGates();
  575.     for (int i = 0; i < 256; i++) {
  576.         IDT_EnableGate(i);
  577.     }
  578.     IDT_DisableGate(0x80);
  579.    
  580. }
  581.  
  582. ISR_HANDLER g_ISRHandlers[256];
  583.  
  584. #include "kstdio.h"
  585. void ISR_Handler(registers_t* regs) {
  586.     printf("ISR handler called\n");
  587.     printf("INT[%lu]%s\n", regs->int_no, exception_messages[regs->int_no]);
  588.     asm("cli");
  589.     asm("hlt");
  590. }
  591. void ISR_RegisterHandler(int interrupt, ISR_HANDLER handler) {
  592.     g_ISRHandlers[interrupt] = handler;
  593.     IDT_EnableGate(interrupt);
  594. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement