- Reworked IDT initialization to register all 32 CPU exception handlers (ISR 0-31) and 16 hardware interrupt handlers (IRQ 0-15, mapped to IDT entries 32-47). - Created assembly stubs in interrupts.S using macros for ISRs with and without error codes, plus IRQ stubs. All route through a common stub that saves registers, loads kernel data segment, and calls the C handler. - Added isr.c with a unified interrupt dispatcher that handles both exceptions (halts on fault) and hardware IRQs (sends EOI via PIC). - Implemented PIC (8259) driver in pic.c with full initialization sequence that remaps IRQ 0-7 to IDT 32-39 and IRQ 8-15 to IDT 40-47. Includes mask/unmask and EOI support. - Extracted port I/O primitives (inb, outb, io_wait) into port_io.h header for reuse across drivers. - Kernel now initializes PIC after IDT and enables interrupts with STI.
12 lines
177 B
C
12 lines
177 B
C
#ifndef PIC_H
|
|
#define PIC_H
|
|
|
|
#include <stdint.h>
|
|
|
|
void init_pic(void);
|
|
void pic_send_eoi(uint8_t irq);
|
|
void pic_clear_mask(uint8_t irq);
|
|
void pic_set_mask(uint8_t irq);
|
|
|
|
#endif
|