matos/arch/x86/irq_handler.c

30 lines
646 B
C
Raw Normal View History

2018-07-20 15:41:58 +02:00
#include "interrupt.h"
#include "io.h"
#include "irq.h"
#include "keyboard.h"
#include "pic.h"
2018-11-08 21:11:45 +01:00
#include "serial.h"
2018-07-20 15:41:58 +02:00
#include "vga.h"
// Need GCC > 6
__attribute__((interrupt)) void keyboard_handler(struct interrupt_frame *frame)
{
EOIIrq(IRQ_KEYBOARD);
keyboard_do_irq();
(void)frame;
2018-07-20 15:41:58 +02:00
}
__attribute__((interrupt)) void timer_handler(struct interrupt_frame *frame)
{
static int timeCnt = 0;
EOIIrq(IRQ_TIMER);
2021-01-25 14:00:06 +01:00
VGAPrintf(RED, BLACK, 20, VGA_HEIGHT - 1, "IRQ %d", timeCnt++);
(void)frame;
2018-07-20 15:41:58 +02:00
}
2018-11-08 21:11:45 +01:00
__attribute__((interrupt)) void serial_handler(struct interrupt_frame *frame)
{
EOIIrq(IRQ_COM1);
serialDoIrq(frame);
2018-11-08 21:11:45 +01:00
}