summaryrefslogtreecommitdiff
path: root/kernel/src/interrupt/pic.c
diff options
context:
space:
mode:
authorTyler Murphy <=>2023-07-17 19:34:52 -0400
committerTyler Murphy <=>2023-07-17 19:34:52 -0400
commit7a912d1b668ab86ffe088eca3ac7e6f78a04a0c5 (patch)
tree4e86ff20e73171285156631db043e12aaf63bf04 /kernel/src/interrupt/pic.c
parentpaging (diff)
downloadfinix-7a912d1b668ab86ffe088eca3ac7e6f78a04a0c5.tar.gz
finix-7a912d1b668ab86ffe088eca3ac7e6f78a04a0c5.tar.bz2
finix-7a912d1b668ab86ffe088eca3ac7e6f78a04a0c5.zip
refactoring
Diffstat (limited to 'kernel/src/interrupt/pic.c')
-rw-r--r--kernel/src/interrupt/pic.c85
1 files changed, 0 insertions, 85 deletions
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 <sys.h>
-#include <print.h>
-
-#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);
-}