Add beginning basic serial driver
This commit is contained in:
@@ -130,7 +130,7 @@ set_idt_entry(uint8_t i, uint64_t addr, uint16_t selector, uint8_t flags)
|
||||
g_idt_table[i].reserved = 0;
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
disable_legacy_pic()
|
||||
{
|
||||
|
||||
@@ -154,6 +154,13 @@ disable_legacy_pic()
|
||||
outb(PIC2+1, 0x02); io_wait();
|
||||
}
|
||||
|
||||
static void
|
||||
enable_serial_interrupts()
|
||||
{
|
||||
uint8_t ier = inb(COM1+1);
|
||||
outb(COM1+1, ier | 0x1);
|
||||
}
|
||||
|
||||
void
|
||||
interrupts_init()
|
||||
{
|
||||
@@ -186,6 +193,7 @@ interrupts_init()
|
||||
|
||||
idt_write();
|
||||
disable_legacy_pic();
|
||||
enable_serial_interrupts();
|
||||
|
||||
log::info(logs::interrupt, "Interrupts enabled.");
|
||||
}
|
||||
@@ -288,6 +296,11 @@ irq_handler(registers regs)
|
||||
cons->set_color();
|
||||
break;
|
||||
|
||||
case 4:
|
||||
// TODO: move this to a real serial driver
|
||||
cons->echo();
|
||||
break;
|
||||
|
||||
default:
|
||||
cons->set_color(11);
|
||||
cons->printf("\nReceived IRQ interrupt: %d (vec %d)\n",
|
||||
|
||||
Reference in New Issue
Block a user