@@ -18,77 +18,78 @@ __attribute__((aligned(16)))
1818idt_entry_t idt_entries [256 ];
1919
2020volatile idt_ptr_t idt64 = {
21- .limit = sizeof (idt_entries ) - 1 ,
22- .base = idt_entries
21+ .limit = sizeof (idt_entries ) - 1 ,
22+ .base = idt_entries
2323};
2424
2525void io_wait () {
26- outb (0x80 , 0 );
26+ outb (0x80 , 0 );
2727}
2828
2929void pic_remap (int offset1 , int offset2 ) {
30- uint8_t a1 = inb (PIC1_DATA );
31- uint8_t a2 = inb (PIC2_DATA );
32-
33- outb (PIC1_COMMAND , ICW1_INIT | ICW1_ICW4 );
34- io_wait ();
35- outb (PIC2_COMMAND , ICW1_INIT | ICW1_ICW4 );
36- io_wait ();
37- outb (PIC1_DATA , offset1 );
38- io_wait ();
39- outb (PIC2_DATA , offset2 );
40- io_wait ();
41- outb (PIC1_DATA , 4 );
42- io_wait ();
43- outb (PIC2_DATA , 2 );
44- io_wait ();
45- outb (PIC1_DATA , ICW4_8086 );
46- io_wait ();
47- outb (PIC2_DATA , ICW4_8086 );
48- io_wait ();
49-
50- outb (PIC1_DATA , a1 );
51- outb (PIC2_DATA , a2 );
30+ uint8_t a1 = inb (PIC1_DATA );
31+ uint8_t a2 = inb (PIC2_DATA );
32+
33+ outb (PIC1_COMMAND , ICW1_INIT | ICW1_ICW4 );
34+ io_wait ();
35+ outb (PIC2_COMMAND , ICW1_INIT | ICW1_ICW4 );
36+ io_wait ();
37+ outb (PIC1_DATA , offset1 );
38+ io_wait ();
39+ outb (PIC2_DATA , offset2 );
40+ io_wait ();
41+ outb (PIC1_DATA , 4 );
42+ io_wait ();
43+ outb (PIC2_DATA , 2 );
44+ io_wait ();
45+ outb (PIC1_DATA , ICW4_8086 );
46+ io_wait ();
47+ outb (PIC2_DATA , ICW4_8086 );
48+ io_wait ();
49+
50+ outb (PIC1_DATA , a1 );
51+ outb (PIC2_DATA , a2 );
5252}
5353
5454void pic_disable () {
55- outb (PIC1_DATA , 0xFF );
56- outb (PIC2_DATA , 0xFF );
55+ outb (PIC1_DATA , 0xFF );
56+ outb (PIC2_DATA , 0xFF );
5757}
5858
5959void pic_enable () {
60- outb (PIC1_DATA , 0x00 );
61- outb (PIC2_DATA , 0x00 );
60+ outb (PIC1_DATA , 0x00 );
61+ outb (PIC2_DATA , 0x00 );
6262}
6363
6464void pic_eoi (int irq ) {
65- if (irq >= 8 ) {
66- outb (PIC2_COMMAND , PIC_EOI );
67- }
68- outb (PIC1_COMMAND , PIC_EOI );
65+ if (irq >= 8 ) {
66+ outb (PIC2_COMMAND , PIC_EOI );
67+ }
68+ outb (PIC1_COMMAND , PIC_EOI );
6969}
7070
7171void init_idt () {
72- memset (idt_entries , 0 , sizeof (idt_entries ));
72+ memset (idt_entries , 0 , sizeof (idt_entries ));
7373
74- init_error_handler ();
75- register_interrupt_handler (IRQ0 , timer_callback , dev_zero , NULL );
76- init_debug ();
74+ init_error_handler ();
75+ register_interrupt_handler (IRQ0 , timer_callback , dev_zero , NULL );
76+ init_debug ();
7777
78- // Fill the IDT with handler pointers (in loader.S)
79- idt_init (idt_entries );
78+ // Fill the IDT with handler pointers (in loader.S)
79+ idt_init (idt_entries );
8080
81- __asm__ volatile ("lidtq (%0)" :: "r" (& idt64 ));
81+ __asm__ volatile ("lidtq (%0)" :: "r" (& idt64 ));
8282
83- uint32_t frequency = 50 ;
84- uint32_t divisor = 1193180 / frequency ;
85- outb (0x43 , 0x36 );
86- outb (0x40 , divisor & 0xFF );
87- outb (0x40 , divisor >> 8 );
83+ uint32_t frequency = 50 ;
84+ uint32_t divisor = 1193180 / frequency ;
85+ outb (0x43 , 0x36 );
86+ outb (0x40 , divisor & 0xFF );
87+ outb (0x40 , divisor >> 8 );
8888
89- pic_remap (0x20 , 0x28 );
90- pic_enable ();
89+ pic_remap (0x20 , 0x28 );
90+ pic_enable ();
9191
92- interrupts_on ();
93- dprintf ("Interrupts enabled!\n" );
92+ interrupts_on ();
93+
94+ dprintf ("Interrupts enabled!\n" );
9495}
0 commit comments