From 0621c44e439bedf034399e1bff139ef506039eba Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Sat, 14 Nov 2020 22:27:59 +0100 Subject: Some fixes I WAS BUG-SEARCHING FOR SEVERAL HOURS WHYYYY, WHEEERE, AAAAAH --- kernel/drivers/interrupts.c | 3 +++ kernel/drivers/keyboard.c | 40 +++++----------------------------------- kernel/drivers/mouse.c | 25 +++++++++++++------------ kernel/drivers/rtl8139.c | 4 ++-- 4 files changed, 23 insertions(+), 49 deletions(-) (limited to 'kernel/drivers') diff --git a/kernel/drivers/interrupts.c b/kernel/drivers/interrupts.c index b0751d6..dd10ac6 100644 --- a/kernel/drivers/interrupts.c +++ b/kernel/drivers/interrupts.c @@ -13,6 +13,9 @@ * IDT */ +struct idt_entry idt[256] = { 0 }; +struct idt_ptr idt_ptr = { 0 }; + void idt_set_gate(u8 num, u32 base, u16 sel, u8 flags) { // Specify the interrupt routine's base address diff --git a/kernel/drivers/keyboard.c b/kernel/drivers/keyboard.c index 67e0a72..ac97d36 100644 --- a/kernel/drivers/keyboard.c +++ b/kernel/drivers/keyboard.c @@ -8,11 +8,10 @@ #include #include -char keymap[128]; -struct event_keyboard *event; +static struct event_keyboard *event = NULL; -int state = 0; -int merged = 0; +static int state = 0; +static int merged = 0; void keyboard_handler() { int scancode = inb(0x60); @@ -29,7 +28,8 @@ void keyboard_handler() // TODO: "Merge" scancode to linux keycode? /* printf("%x %x = %x\n", scancode, state ? 0xe0 : 0, merged); */ - free(event); + if (event) + free(event); event = malloc(sizeof(*event)); event->magic = KEYBOARD_MAGIC; event->press = (scancode & 0x80) == 0; @@ -58,33 +58,3 @@ void keyboard_install(void) //keyboard_rate(); TODO: Fix keyboard rate? irq_install_handler(1, keyboard_handler); } - -char keymap[128] = { - 0, 27, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', - '\b', '\t', 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', - '\n', 17, 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', '\'', '`', - 14, '\\', 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', 14, '*', - 0, // Alt key - ' ', // Space bar - 15, // Caps lock - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // F keys - 0, // Num lock - 0, // Scroll lock - 0, // Home key - 0, // Up arrow - 0, // Page up - '-', - 0, // Left arrow - 0, - 0, // Right arrow - '+', - 0, // End key - 0, // Down arrow - 0, // Page down - 0, // Insert key - 0, // Delete key - 0, 0, 0, - 0, // F11 - 0, // F12 - 0, // Other keys -}; diff --git a/kernel/drivers/mouse.c b/kernel/drivers/mouse.c index 9b34b0a..d58fbfc 100644 --- a/kernel/drivers/mouse.c +++ b/kernel/drivers/mouse.c @@ -8,10 +8,10 @@ #include #include -char mouse_cycle = 0; -char mouse_byte[3]; +static char mouse_cycle = 0; +static char mouse_byte[3] = { 0 }; -struct event_mouse *event; +static struct event_mouse *event = NULL; void mouse_handler() { @@ -30,7 +30,8 @@ void mouse_handler() case 2: mouse_byte[2] = (char)inb(0x60); - free(event); + if (event) + free(event); event = malloc(sizeof(*event)); event->magic = MOUSE_MAGIC; event->diff_x = mouse_byte[1]; @@ -140,14 +141,14 @@ void mouse_install(void) printf("4th and 5th mouse button support!\n"); /* TODO: Fix mouse laggyness - mouse_write(0xE8); - mouse_read(); - mouse_write(0x03); - mouse_read(); - mouse_write(0xF3); - mouse_read(); - mouse_write(200); - mouse_read(); */ + mouse_write(0xE8); + mouse_read(); + mouse_write(0x03); + mouse_read(); + mouse_write(0xF3); + mouse_read(); + mouse_write(200); + mouse_read(); */ // Enable mouse mouse_write(0xF4); diff --git a/kernel/drivers/rtl8139.c b/kernel/drivers/rtl8139.c index b870825..fb60865 100644 --- a/kernel/drivers/rtl8139.c +++ b/kernel/drivers/rtl8139.c @@ -12,9 +12,9 @@ #include static int rtl_irq = 0; -static u8 mac[6]; +static u8 mac[6] = { 0 }; static u8 *last_packet = NULL; -static u8 *rtl_rx_buffer; +static u8 *rtl_rx_buffer = NULL; static u32 rtl_device_pci = 0; static u32 rtl_iobase = 0; static u32 cur_rx = 0; -- cgit v1.2.3