From bd7d4366b6643b5c6cd04f40dd32f5d9c9575fd6 Mon Sep 17 00:00:00 2001 From: Aleksa Vuckovic Date: Fri, 5 Aug 2022 14:33:51 +0200 Subject: organised files; switched to recursive make --- kernel/src/cpu/pic.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 kernel/src/cpu/pic.c (limited to 'kernel/src/cpu/pic.c') diff --git a/kernel/src/cpu/pic.c b/kernel/src/cpu/pic.c new file mode 100644 index 0000000..801556d --- /dev/null +++ b/kernel/src/cpu/pic.c @@ -0,0 +1,24 @@ +#include +#include + +void remap_pic(void) +{ + // save masks +// uint8_t a1 = inb(PIC1_DATA); +// uint8_t a2 = inb(PIC2_DATA); + + // starts the initialization sequence (in cascade mode) + outb(PIC1_COMMAND, ICW1_INIT | ICW1_ICW4); + outb(PIC2_COMMAND, ICW1_INIT | ICW1_ICW4); + outb(PIC1_DATA, 0x20); // ICW2: Master PIC vector offset + outb(PIC2_DATA, 0x28); // ICW2: Slave PIC vector offset + outb(PIC1_DATA, 4); // ICW3: tell Master PIC that there is a slave PIC at IRQ2 (0000 0100) + outb(PIC2_DATA, 2); // ICW3: tell Slave PIC its cascade identity (0000 0010) + + outb(PIC1_DATA, ICW4_8086); + outb(PIC2_DATA, ICW4_8086); + + // mask interrupts + outb(PIC1_DATA, 0xfd); + outb(PIC2_DATA, 0xff); +} -- cgit v1.2.3