k-chow/k/pic.c
Julien CLEMENT 87eaa96d0c fix(pic): unmask IRQ1
Signed-off-by: Julien CLEMENT <julien.clement@epita.fr>
2021-07-21 20:38:20 +02:00

45 lines
684 B
C

#include "idt.h"
#include "io.h"
#include "pic.h"
static void send_icw1(void)
{
outb(MASTER_PIC_A, ICW1);
outb(SLAVE_PIC_A, ICW1);
}
static void send_icw2(void)
{
outb(MASTER_PIC_B, IDT_RESERVED_ENTRIES);
outb(SLAVE_PIC_B, IDT_RESERVED_ENTRIES + 8);
}
static void send_icw3(void)
{
outb(MASTER_PIC_B, 0x4);
outb(SLAVE_PIC_B, 0x2);
}
static void send_icw4(void)
{
outb(MASTER_PIC_B, 0x1);
outb(SLAVE_PIC_B, 0x1);
}
static void mask_irqs(void)
{
outb(MASTER_PIC_B, 0xff ^ 0x2);
outb(SLAVE_PIC_B, 0xff);
}
void init_pic(void)
{
send_icw1();
send_icw2();
send_icw3();
send_icw4();
mask_irqs();
asm volatile("sti");
}