From 7a912d1b668ab86ffe088eca3ac7e6f78a04a0c5 Mon Sep 17 00:00:00 2001 From: Tyler Murphy <=> Date: Mon, 17 Jul 2023 19:34:52 -0400 Subject: refactoring --- kernel/src/interrupt/pic.c | 85 ---------------------------------------------- 1 file changed, 85 deletions(-) delete mode 100644 kernel/src/interrupt/pic.c (limited to 'kernel/src/interrupt/pic.c') diff --git a/kernel/src/interrupt/pic.c b/kernel/src/interrupt/pic.c deleted file mode 100644 index 86056a1..0000000 --- a/kernel/src/interrupt/pic.c +++ /dev/null @@ -1,85 +0,0 @@ -#include -#include - -#include "pic.h" - -#define PIC1_COMMAND_PORT 0x20 -#define PIC1_DATA_PORT 0x21 -#define PIC2_COMMAND_PORT 0xA0 -#define PIC2_DATA_PORT 0xA1 - -void pic_remap(uint8_t offset) { - - debugk("Remapping PIC"); - - char a1 = inb(PIC1_DATA_PORT); - char a2 = inb(PIC2_DATA_PORT); - // control word 1 - // 0x11: initialize, enable ICW4 - outb(PIC1_COMMAND_PORT, 0x11); - io_wait(); - outb(PIC2_COMMAND_PORT, 0x11); - io_wait(); - // control word 2 - // interrupt offset - outb(PIC1_DATA_PORT, offset); - io_wait(); - outb(PIC2_DATA_PORT, offset + 8); - io_wait(); - // control word 3 - // primary pic: set which pin secondary is connected to - // (pin 2) - outb(PIC1_DATA_PORT, 0x04); - io_wait(); - outb(PIC2_DATA_PORT, 2); - io_wait(); - // control word 3 - // 0x01: enable 8086 mode - outb(PIC1_DATA_PORT, 0x01); - io_wait(); - outb(PIC2_DATA_PORT, 0x01); - io_wait(); - // clear data registers - outb(PIC1_DATA_PORT, a1); - outb(PIC2_DATA_PORT, a2); - - succek("PIC has been remapped to offset 0x%X", offset); -} - -void pic_mask(int irq) { - uint8_t port; - if(irq < 8) { - port = PIC1_DATA_PORT; - } else { - irq -= 8; - port = PIC2_DATA_PORT; - } - uint8_t mask = inb(port); - outb(port, mask | (1 << irq)); -} - -void pic_unmask(int irq) { - uint8_t port; - if(irq < 8) { - port = PIC1_DATA_PORT; - } else { - irq -= 8; - port = PIC2_DATA_PORT; - } - uint8_t mask = inb(port); - outb(port, mask & ~(1 << irq)); -} - -void pic_disable(void) { - outb(PIC1_DATA_PORT, 0xff); - io_wait(); - outb(PIC2_DATA_PORT, 0xff); - io_wait(); -} - -void pic_eoi(int irq) { - if(irq >= 8) { - outb(PIC2_COMMAND_PORT, 0x20); - } - outb(PIC1_COMMAND_PORT, 0x20); -} -- cgit v1.2.3-freya