From 457a2117706cdaee34f894e67c89da7bf29f6143 Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Mon, 12 Apr 2021 10:28:04 +0200 Subject: Refactoring --- src/drivers/pic.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/drivers/pic.c (limited to 'src/drivers/pic.c') diff --git a/src/drivers/pic.c b/src/drivers/pic.c new file mode 100644 index 0000000..d509e1d --- /dev/null +++ b/src/drivers/pic.c @@ -0,0 +1,28 @@ +#include "pic.h" +#include "core/asm.h" +#include "core/mem.h" +#include "core/syscall.h" + +void pic_init(){ + + // ICW1: Initialisation + outbj(0x20,0x11); // Master + outbj(0xA0,0x11); // Slave + + // ICW2: Map IRQ index to entry into the IDT + outbj(0x21,0x20); // Start interrupt at offset 0x20 in IDT (index 32) + outbj(0xA1,0x70); // Start interrupt at offset 0x50 in IDT (index 80) + + // ICW3: Indicate the connection between master and slave + outbj(0x21,0x02); // Slave connected to pin 2 + outbj(0xA1,0x01); // Indicate pin id to the slave (2-1) + + // ICW4: Operating mode + outbj(0x21,0x01); // Default operating mode + outbj(0xA1,0x01); // Default operating mode + + // OCW: Masking + outbj(0x21,0b11111100); +} + + -- cgit v1.2.3