fix: the correct way to detect ahci LBA48 support
[lunaix-os.git] / lunaix-os / kernel / asm / x86 / intrhnds.c
1
2 #include <arch/x86/idt.h>
3 #include <arch/x86/intrhnds.h>
4 #include <lunaix/types.h>
5
6 #define IDT_ENTRY 256
7
8 uint64_t _idt[IDT_ENTRY];
9 uint16_t _idt_limit = sizeof(_idt) - 1;
10 static inline void
11 _set_idt_entry(u32_t vector,
12                uint16_t seg_selector,
13                void (*isr)(),
14                uint8_t dpl,
15                uint8_t type)
16 {
17     uintptr_t offset = (uintptr_t)isr;
18     _idt[vector] = (offset & 0xffff0000) | IDT_ATTR(dpl, type);
19     _idt[vector] <<= 32;
20     _idt[vector] |= (seg_selector << 16) | (offset & 0x0000ffff);
21 }
22
23 void
24 _init_idt()
25 {
26     _set_idt_entry(0, 8, _asm_isr0, 0, IDT_INTERRUPT);
27     _set_idt_entry(1, 8, _asm_isr1, 0, IDT_INTERRUPT);
28     _set_idt_entry(2, 8, _asm_isr2, 0, IDT_INTERRUPT);
29     _set_idt_entry(3, 8, _asm_isr3, 0, IDT_INTERRUPT);
30     _set_idt_entry(4, 8, _asm_isr4, 0, IDT_INTERRUPT);
31     _set_idt_entry(5, 8, _asm_isr5, 0, IDT_INTERRUPT);
32     _set_idt_entry(6, 8, _asm_isr6, 0, IDT_INTERRUPT);
33     _set_idt_entry(7, 8, _asm_isr7, 0, IDT_INTERRUPT);
34     _set_idt_entry(8, 8, _asm_isr8, 0, IDT_INTERRUPT);
35     _set_idt_entry(9, 8, _asm_isr9, 0, IDT_INTERRUPT);
36     _set_idt_entry(10, 8, _asm_isr10, 0, IDT_INTERRUPT);
37     _set_idt_entry(11, 8, _asm_isr11, 0, IDT_INTERRUPT);
38     _set_idt_entry(12, 8, _asm_isr12, 0, IDT_INTERRUPT);
39     _set_idt_entry(13, 8, _asm_isr13, 0, IDT_INTERRUPT);
40     _set_idt_entry(14, 8, _asm_isr14, 0, IDT_INTERRUPT);
41     _set_idt_entry(15, 8, _asm_isr15, 0, IDT_INTERRUPT);
42     _set_idt_entry(16, 8, _asm_isr16, 0, IDT_INTERRUPT);
43     _set_idt_entry(17, 8, _asm_isr17, 0, IDT_INTERRUPT);
44     _set_idt_entry(18, 8, _asm_isr18, 0, IDT_INTERRUPT);
45     _set_idt_entry(19, 8, _asm_isr19, 0, IDT_INTERRUPT);
46     _set_idt_entry(20, 8, _asm_isr20, 0, IDT_INTERRUPT);
47     _set_idt_entry(21, 8, _asm_isr21, 0, IDT_INTERRUPT);
48     _set_idt_entry(22, 8, _asm_isr22, 0, IDT_INTERRUPT);
49     _set_idt_entry(23, 8, _asm_isr23, 0, IDT_INTERRUPT);
50     _set_idt_entry(24, 8, _asm_isr24, 0, IDT_INTERRUPT);
51     _set_idt_entry(25, 8, _asm_isr25, 0, IDT_INTERRUPT);
52     _set_idt_entry(26, 8, _asm_isr26, 0, IDT_INTERRUPT);
53     _set_idt_entry(27, 8, _asm_isr27, 0, IDT_INTERRUPT);
54     _set_idt_entry(28, 8, _asm_isr28, 0, IDT_INTERRUPT);
55     _set_idt_entry(29, 8, _asm_isr29, 0, IDT_INTERRUPT);
56     _set_idt_entry(30, 8, _asm_isr30, 0, IDT_INTERRUPT);
57     _set_idt_entry(31, 8, _asm_isr31, 0, IDT_INTERRUPT);
58     _set_idt_entry(32, 8, _asm_isr32, 0, IDT_INTERRUPT);
59     _set_idt_entry(33, 8, _asm_isr33, 3, IDT_INTERRUPT);
60     _set_idt_entry(34, 8, _asm_isr34, 0, IDT_INTERRUPT);
61     _set_idt_entry(35, 8, _asm_isr35, 0, IDT_INTERRUPT);
62     _set_idt_entry(36, 8, _asm_isr36, 0, IDT_INTERRUPT);
63     _set_idt_entry(37, 8, _asm_isr37, 0, IDT_INTERRUPT);
64     _set_idt_entry(38, 8, _asm_isr38, 0, IDT_INTERRUPT);
65     _set_idt_entry(39, 8, _asm_isr39, 0, IDT_INTERRUPT);
66     _set_idt_entry(40, 8, _asm_isr40, 0, IDT_INTERRUPT);
67     _set_idt_entry(41, 8, _asm_isr41, 0, IDT_INTERRUPT);
68     _set_idt_entry(42, 8, _asm_isr42, 0, IDT_INTERRUPT);
69     _set_idt_entry(43, 8, _asm_isr43, 0, IDT_INTERRUPT);
70     _set_idt_entry(44, 8, _asm_isr44, 0, IDT_INTERRUPT);
71     _set_idt_entry(45, 8, _asm_isr45, 0, IDT_INTERRUPT);
72     _set_idt_entry(46, 8, _asm_isr46, 0, IDT_INTERRUPT);
73     _set_idt_entry(47, 8, _asm_isr47, 0, IDT_INTERRUPT);
74     _set_idt_entry(48, 8, _asm_isr48, 0, IDT_INTERRUPT);
75     _set_idt_entry(49, 8, _asm_isr49, 0, IDT_INTERRUPT);
76     _set_idt_entry(50, 8, _asm_isr50, 0, IDT_INTERRUPT);
77     _set_idt_entry(51, 8, _asm_isr51, 0, IDT_INTERRUPT);
78     _set_idt_entry(52, 8, _asm_isr52, 0, IDT_INTERRUPT);
79     _set_idt_entry(53, 8, _asm_isr53, 0, IDT_INTERRUPT);
80     _set_idt_entry(54, 8, _asm_isr54, 0, IDT_INTERRUPT);
81     _set_idt_entry(55, 8, _asm_isr55, 0, IDT_INTERRUPT);
82     _set_idt_entry(56, 8, _asm_isr56, 0, IDT_INTERRUPT);
83     _set_idt_entry(57, 8, _asm_isr57, 0, IDT_INTERRUPT);
84     _set_idt_entry(58, 8, _asm_isr58, 0, IDT_INTERRUPT);
85     _set_idt_entry(59, 8, _asm_isr59, 0, IDT_INTERRUPT);
86     _set_idt_entry(60, 8, _asm_isr60, 0, IDT_INTERRUPT);
87     _set_idt_entry(61, 8, _asm_isr61, 0, IDT_INTERRUPT);
88     _set_idt_entry(62, 8, _asm_isr62, 0, IDT_INTERRUPT);
89     _set_idt_entry(63, 8, _asm_isr63, 0, IDT_INTERRUPT);
90     _set_idt_entry(64, 8, _asm_isr64, 0, IDT_INTERRUPT);
91     _set_idt_entry(65, 8, _asm_isr65, 0, IDT_INTERRUPT);
92     _set_idt_entry(66, 8, _asm_isr66, 0, IDT_INTERRUPT);
93     _set_idt_entry(67, 8, _asm_isr67, 0, IDT_INTERRUPT);
94     _set_idt_entry(68, 8, _asm_isr68, 0, IDT_INTERRUPT);
95     _set_idt_entry(69, 8, _asm_isr69, 0, IDT_INTERRUPT);
96     _set_idt_entry(70, 8, _asm_isr70, 0, IDT_INTERRUPT);
97     _set_idt_entry(71, 8, _asm_isr71, 0, IDT_INTERRUPT);
98     _set_idt_entry(72, 8, _asm_isr72, 0, IDT_INTERRUPT);
99     _set_idt_entry(73, 8, _asm_isr73, 0, IDT_INTERRUPT);
100     _set_idt_entry(74, 8, _asm_isr74, 0, IDT_INTERRUPT);
101     _set_idt_entry(75, 8, _asm_isr75, 0, IDT_INTERRUPT);
102     _set_idt_entry(76, 8, _asm_isr76, 0, IDT_INTERRUPT);
103     _set_idt_entry(77, 8, _asm_isr77, 0, IDT_INTERRUPT);
104     _set_idt_entry(78, 8, _asm_isr78, 0, IDT_INTERRUPT);
105     _set_idt_entry(79, 8, _asm_isr79, 0, IDT_INTERRUPT);
106     _set_idt_entry(80, 8, _asm_isr80, 0, IDT_INTERRUPT);
107     _set_idt_entry(81, 8, _asm_isr81, 0, IDT_INTERRUPT);
108     _set_idt_entry(82, 8, _asm_isr82, 0, IDT_INTERRUPT);
109     _set_idt_entry(83, 8, _asm_isr83, 0, IDT_INTERRUPT);
110     _set_idt_entry(84, 8, _asm_isr84, 0, IDT_INTERRUPT);
111     _set_idt_entry(85, 8, _asm_isr85, 0, IDT_INTERRUPT);
112     _set_idt_entry(86, 8, _asm_isr86, 0, IDT_INTERRUPT);
113     _set_idt_entry(87, 8, _asm_isr87, 0, IDT_INTERRUPT);
114     _set_idt_entry(88, 8, _asm_isr88, 0, IDT_INTERRUPT);
115     _set_idt_entry(89, 8, _asm_isr89, 0, IDT_INTERRUPT);
116     _set_idt_entry(90, 8, _asm_isr90, 0, IDT_INTERRUPT);
117     _set_idt_entry(91, 8, _asm_isr91, 0, IDT_INTERRUPT);
118     _set_idt_entry(92, 8, _asm_isr92, 0, IDT_INTERRUPT);
119     _set_idt_entry(93, 8, _asm_isr93, 0, IDT_INTERRUPT);
120     _set_idt_entry(94, 8, _asm_isr94, 0, IDT_INTERRUPT);
121     _set_idt_entry(95, 8, _asm_isr95, 0, IDT_INTERRUPT);
122     _set_idt_entry(96, 8, _asm_isr96, 0, IDT_INTERRUPT);
123     _set_idt_entry(97, 8, _asm_isr97, 0, IDT_INTERRUPT);
124     _set_idt_entry(98, 8, _asm_isr98, 0, IDT_INTERRUPT);
125     _set_idt_entry(99, 8, _asm_isr99, 0, IDT_INTERRUPT);
126     _set_idt_entry(100, 8, _asm_isr100, 0, IDT_INTERRUPT);
127     _set_idt_entry(101, 8, _asm_isr101, 0, IDT_INTERRUPT);
128     _set_idt_entry(102, 8, _asm_isr102, 0, IDT_INTERRUPT);
129     _set_idt_entry(103, 8, _asm_isr103, 0, IDT_INTERRUPT);
130     _set_idt_entry(104, 8, _asm_isr104, 0, IDT_INTERRUPT);
131     _set_idt_entry(105, 8, _asm_isr105, 0, IDT_INTERRUPT);
132     _set_idt_entry(106, 8, _asm_isr106, 0, IDT_INTERRUPT);
133     _set_idt_entry(107, 8, _asm_isr107, 0, IDT_INTERRUPT);
134     _set_idt_entry(108, 8, _asm_isr108, 0, IDT_INTERRUPT);
135     _set_idt_entry(109, 8, _asm_isr109, 0, IDT_INTERRUPT);
136     _set_idt_entry(110, 8, _asm_isr110, 0, IDT_INTERRUPT);
137     _set_idt_entry(111, 8, _asm_isr111, 0, IDT_INTERRUPT);
138     _set_idt_entry(112, 8, _asm_isr112, 0, IDT_INTERRUPT);
139     _set_idt_entry(113, 8, _asm_isr113, 0, IDT_INTERRUPT);
140     _set_idt_entry(114, 8, _asm_isr114, 0, IDT_INTERRUPT);
141     _set_idt_entry(115, 8, _asm_isr115, 0, IDT_INTERRUPT);
142     _set_idt_entry(116, 8, _asm_isr116, 0, IDT_INTERRUPT);
143     _set_idt_entry(117, 8, _asm_isr117, 0, IDT_INTERRUPT);
144     _set_idt_entry(118, 8, _asm_isr118, 0, IDT_INTERRUPT);
145     _set_idt_entry(119, 8, _asm_isr119, 0, IDT_INTERRUPT);
146     _set_idt_entry(120, 8, _asm_isr120, 0, IDT_INTERRUPT);
147     _set_idt_entry(121, 8, _asm_isr121, 0, IDT_INTERRUPT);
148     _set_idt_entry(122, 8, _asm_isr122, 0, IDT_INTERRUPT);
149     _set_idt_entry(123, 8, _asm_isr123, 0, IDT_INTERRUPT);
150     _set_idt_entry(124, 8, _asm_isr124, 0, IDT_INTERRUPT);
151     _set_idt_entry(125, 8, _asm_isr125, 0, IDT_INTERRUPT);
152     _set_idt_entry(126, 8, _asm_isr126, 0, IDT_INTERRUPT);
153     _set_idt_entry(127, 8, _asm_isr127, 0, IDT_INTERRUPT);
154     _set_idt_entry(128, 8, _asm_isr128, 0, IDT_INTERRUPT);
155     _set_idt_entry(129, 8, _asm_isr129, 0, IDT_INTERRUPT);
156     _set_idt_entry(130, 8, _asm_isr130, 0, IDT_INTERRUPT);
157     _set_idt_entry(131, 8, _asm_isr131, 0, IDT_INTERRUPT);
158     _set_idt_entry(132, 8, _asm_isr132, 0, IDT_INTERRUPT);
159     _set_idt_entry(133, 8, _asm_isr133, 0, IDT_INTERRUPT);
160     _set_idt_entry(134, 8, _asm_isr134, 0, IDT_INTERRUPT);
161     _set_idt_entry(135, 8, _asm_isr135, 0, IDT_INTERRUPT);
162     _set_idt_entry(136, 8, _asm_isr136, 0, IDT_INTERRUPT);
163     _set_idt_entry(137, 8, _asm_isr137, 0, IDT_INTERRUPT);
164     _set_idt_entry(138, 8, _asm_isr138, 0, IDT_INTERRUPT);
165     _set_idt_entry(139, 8, _asm_isr139, 0, IDT_INTERRUPT);
166     _set_idt_entry(140, 8, _asm_isr140, 0, IDT_INTERRUPT);
167     _set_idt_entry(141, 8, _asm_isr141, 0, IDT_INTERRUPT);
168     _set_idt_entry(142, 8, _asm_isr142, 0, IDT_INTERRUPT);
169     _set_idt_entry(143, 8, _asm_isr143, 0, IDT_INTERRUPT);
170     _set_idt_entry(144, 8, _asm_isr144, 0, IDT_INTERRUPT);
171     _set_idt_entry(145, 8, _asm_isr145, 0, IDT_INTERRUPT);
172     _set_idt_entry(146, 8, _asm_isr146, 0, IDT_INTERRUPT);
173     _set_idt_entry(147, 8, _asm_isr147, 0, IDT_INTERRUPT);
174     _set_idt_entry(148, 8, _asm_isr148, 0, IDT_INTERRUPT);
175     _set_idt_entry(149, 8, _asm_isr149, 0, IDT_INTERRUPT);
176     _set_idt_entry(150, 8, _asm_isr150, 0, IDT_INTERRUPT);
177     _set_idt_entry(151, 8, _asm_isr151, 0, IDT_INTERRUPT);
178     _set_idt_entry(152, 8, _asm_isr152, 0, IDT_INTERRUPT);
179     _set_idt_entry(153, 8, _asm_isr153, 0, IDT_INTERRUPT);
180     _set_idt_entry(154, 8, _asm_isr154, 0, IDT_INTERRUPT);
181     _set_idt_entry(155, 8, _asm_isr155, 0, IDT_INTERRUPT);
182     _set_idt_entry(156, 8, _asm_isr156, 0, IDT_INTERRUPT);
183     _set_idt_entry(157, 8, _asm_isr157, 0, IDT_INTERRUPT);
184     _set_idt_entry(158, 8, _asm_isr158, 0, IDT_INTERRUPT);
185     _set_idt_entry(159, 8, _asm_isr159, 0, IDT_INTERRUPT);
186     _set_idt_entry(160, 8, _asm_isr160, 0, IDT_INTERRUPT);
187     _set_idt_entry(161, 8, _asm_isr161, 0, IDT_INTERRUPT);
188     _set_idt_entry(162, 8, _asm_isr162, 0, IDT_INTERRUPT);
189     _set_idt_entry(163, 8, _asm_isr163, 0, IDT_INTERRUPT);
190     _set_idt_entry(164, 8, _asm_isr164, 0, IDT_INTERRUPT);
191     _set_idt_entry(165, 8, _asm_isr165, 0, IDT_INTERRUPT);
192     _set_idt_entry(166, 8, _asm_isr166, 0, IDT_INTERRUPT);
193     _set_idt_entry(167, 8, _asm_isr167, 0, IDT_INTERRUPT);
194     _set_idt_entry(168, 8, _asm_isr168, 0, IDT_INTERRUPT);
195     _set_idt_entry(169, 8, _asm_isr169, 0, IDT_INTERRUPT);
196     _set_idt_entry(170, 8, _asm_isr170, 0, IDT_INTERRUPT);
197     _set_idt_entry(171, 8, _asm_isr171, 0, IDT_INTERRUPT);
198     _set_idt_entry(172, 8, _asm_isr172, 0, IDT_INTERRUPT);
199     _set_idt_entry(173, 8, _asm_isr173, 0, IDT_INTERRUPT);
200     _set_idt_entry(174, 8, _asm_isr174, 0, IDT_INTERRUPT);
201     _set_idt_entry(175, 8, _asm_isr175, 0, IDT_INTERRUPT);
202     _set_idt_entry(176, 8, _asm_isr176, 0, IDT_INTERRUPT);
203     _set_idt_entry(177, 8, _asm_isr177, 0, IDT_INTERRUPT);
204     _set_idt_entry(178, 8, _asm_isr178, 0, IDT_INTERRUPT);
205     _set_idt_entry(179, 8, _asm_isr179, 0, IDT_INTERRUPT);
206     _set_idt_entry(180, 8, _asm_isr180, 0, IDT_INTERRUPT);
207     _set_idt_entry(181, 8, _asm_isr181, 0, IDT_INTERRUPT);
208     _set_idt_entry(182, 8, _asm_isr182, 0, IDT_INTERRUPT);
209     _set_idt_entry(183, 8, _asm_isr183, 0, IDT_INTERRUPT);
210     _set_idt_entry(184, 8, _asm_isr184, 0, IDT_INTERRUPT);
211     _set_idt_entry(185, 8, _asm_isr185, 0, IDT_INTERRUPT);
212     _set_idt_entry(186, 8, _asm_isr186, 0, IDT_INTERRUPT);
213     _set_idt_entry(187, 8, _asm_isr187, 0, IDT_INTERRUPT);
214     _set_idt_entry(188, 8, _asm_isr188, 0, IDT_INTERRUPT);
215     _set_idt_entry(189, 8, _asm_isr189, 0, IDT_INTERRUPT);
216     _set_idt_entry(190, 8, _asm_isr190, 0, IDT_INTERRUPT);
217     _set_idt_entry(191, 8, _asm_isr191, 0, IDT_INTERRUPT);
218     _set_idt_entry(192, 8, _asm_isr192, 0, IDT_INTERRUPT);
219     _set_idt_entry(193, 8, _asm_isr193, 0, IDT_INTERRUPT);
220     _set_idt_entry(194, 8, _asm_isr194, 0, IDT_INTERRUPT);
221     _set_idt_entry(195, 8, _asm_isr195, 0, IDT_INTERRUPT);
222     _set_idt_entry(196, 8, _asm_isr196, 0, IDT_INTERRUPT);
223     _set_idt_entry(197, 8, _asm_isr197, 0, IDT_INTERRUPT);
224     _set_idt_entry(198, 8, _asm_isr198, 0, IDT_INTERRUPT);
225     _set_idt_entry(199, 8, _asm_isr199, 0, IDT_INTERRUPT);
226     _set_idt_entry(200, 8, _asm_isr200, 0, IDT_INTERRUPT);
227     _set_idt_entry(201, 8, _asm_isr201, 0, IDT_INTERRUPT);
228     _set_idt_entry(202, 8, _asm_isr202, 0, IDT_INTERRUPT);
229     _set_idt_entry(203, 8, _asm_isr203, 0, IDT_INTERRUPT);
230     _set_idt_entry(204, 8, _asm_isr204, 0, IDT_INTERRUPT);
231     _set_idt_entry(205, 8, _asm_isr205, 0, IDT_INTERRUPT);
232     _set_idt_entry(206, 8, _asm_isr206, 0, IDT_INTERRUPT);
233     _set_idt_entry(207, 8, _asm_isr207, 0, IDT_INTERRUPT);
234     _set_idt_entry(208, 8, _asm_isr208, 0, IDT_INTERRUPT);
235     _set_idt_entry(209, 8, _asm_isr209, 0, IDT_INTERRUPT);
236     _set_idt_entry(210, 8, _asm_isr210, 0, IDT_INTERRUPT);
237     _set_idt_entry(211, 8, _asm_isr211, 0, IDT_INTERRUPT);
238     _set_idt_entry(212, 8, _asm_isr212, 0, IDT_INTERRUPT);
239     _set_idt_entry(213, 8, _asm_isr213, 0, IDT_INTERRUPT);
240     _set_idt_entry(214, 8, _asm_isr214, 0, IDT_INTERRUPT);
241     _set_idt_entry(215, 8, _asm_isr215, 0, IDT_INTERRUPT);
242     _set_idt_entry(216, 8, _asm_isr216, 0, IDT_INTERRUPT);
243     _set_idt_entry(217, 8, _asm_isr217, 0, IDT_INTERRUPT);
244     _set_idt_entry(218, 8, _asm_isr218, 0, IDT_INTERRUPT);
245     _set_idt_entry(219, 8, _asm_isr219, 0, IDT_INTERRUPT);
246     _set_idt_entry(220, 8, _asm_isr220, 0, IDT_INTERRUPT);
247     _set_idt_entry(221, 8, _asm_isr221, 0, IDT_INTERRUPT);
248     _set_idt_entry(222, 8, _asm_isr222, 0, IDT_INTERRUPT);
249     _set_idt_entry(223, 8, _asm_isr223, 0, IDT_INTERRUPT);
250     _set_idt_entry(224, 8, _asm_isr224, 0, IDT_INTERRUPT);
251     _set_idt_entry(225, 8, _asm_isr225, 0, IDT_INTERRUPT);
252     _set_idt_entry(226, 8, _asm_isr226, 0, IDT_INTERRUPT);
253     _set_idt_entry(227, 8, _asm_isr227, 0, IDT_INTERRUPT);
254     _set_idt_entry(228, 8, _asm_isr228, 0, IDT_INTERRUPT);
255     _set_idt_entry(229, 8, _asm_isr229, 0, IDT_INTERRUPT);
256     _set_idt_entry(230, 8, _asm_isr230, 0, IDT_INTERRUPT);
257     _set_idt_entry(231, 8, _asm_isr231, 0, IDT_INTERRUPT);
258     _set_idt_entry(232, 8, _asm_isr232, 0, IDT_INTERRUPT);
259     _set_idt_entry(233, 8, _asm_isr233, 0, IDT_INTERRUPT);
260     _set_idt_entry(234, 8, _asm_isr234, 0, IDT_INTERRUPT);
261     _set_idt_entry(235, 8, _asm_isr235, 0, IDT_INTERRUPT);
262     _set_idt_entry(236, 8, _asm_isr236, 0, IDT_INTERRUPT);
263     _set_idt_entry(237, 8, _asm_isr237, 0, IDT_INTERRUPT);
264     _set_idt_entry(238, 8, _asm_isr238, 0, IDT_INTERRUPT);
265     _set_idt_entry(239, 8, _asm_isr239, 0, IDT_INTERRUPT);
266     _set_idt_entry(240, 8, _asm_isr240, 0, IDT_INTERRUPT);
267     _set_idt_entry(241, 8, _asm_isr241, 0, IDT_INTERRUPT);
268     _set_idt_entry(242, 8, _asm_isr242, 0, IDT_INTERRUPT);
269     _set_idt_entry(243, 8, _asm_isr243, 0, IDT_INTERRUPT);
270     _set_idt_entry(244, 8, _asm_isr244, 0, IDT_INTERRUPT);
271     _set_idt_entry(245, 8, _asm_isr245, 0, IDT_INTERRUPT);
272     _set_idt_entry(246, 8, _asm_isr246, 0, IDT_INTERRUPT);
273     _set_idt_entry(247, 8, _asm_isr247, 0, IDT_INTERRUPT);
274     _set_idt_entry(248, 8, _asm_isr248, 0, IDT_INTERRUPT);
275     _set_idt_entry(249, 8, _asm_isr249, 0, IDT_INTERRUPT);
276     _set_idt_entry(250, 8, _asm_isr250, 0, IDT_INTERRUPT);
277     _set_idt_entry(251, 8, _asm_isr251, 0, IDT_INTERRUPT);
278     _set_idt_entry(252, 8, _asm_isr252, 0, IDT_INTERRUPT);
279     _set_idt_entry(253, 8, _asm_isr253, 0, IDT_INTERRUPT);
280     _set_idt_entry(254, 8, _asm_isr254, 0, IDT_INTERRUPT);
281     _set_idt_entry(255, 8, _asm_isr255, 0, IDT_INTERRUPT);
282 }