2025-06-13 19:53:54 -05:00
|
|
|
#include <stdio.h>
|
|
|
|
#include <drivers/ps2_keyboard.h>
|
2025-06-17 15:50:07 -05:00
|
|
|
#include <drivers/pit.h>
|
2025-06-13 18:03:39 -05:00
|
|
|
|
|
|
|
#include <drivers/irq.h>
|
|
|
|
|
2025-07-01 20:39:38 -05:00
|
|
|
irq_func_t func_list[64];
|
|
|
|
|
|
|
|
void irq_init(void)
|
|
|
|
{
|
|
|
|
set_irq_handler(0, (irq_func_t*)pit_handler);
|
|
|
|
set_irq_handler(1, (irq_func_t*)keyboard_handler);
|
|
|
|
}
|
2025-06-13 18:03:39 -05:00
|
|
|
|
|
|
|
void irq_handler(uint8_t irq_number)
|
|
|
|
{
|
2025-07-01 20:39:38 -05:00
|
|
|
if (irq_number < 64 && func_list[irq_number])
|
|
|
|
{
|
|
|
|
func_list[irq_number]();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void set_irq_handler(uint32_t num, irq_func_t* handler)
|
|
|
|
{
|
|
|
|
if (num < 64)
|
2025-06-13 19:53:54 -05:00
|
|
|
{
|
2025-07-01 20:39:38 -05:00
|
|
|
func_list[num] = (irq_func_t)handler;
|
2025-06-13 19:53:54 -05:00
|
|
|
}
|
2025-06-13 18:03:39 -05:00
|
|
|
}
|