Wenn ich den Kernel bei mir ohne Änderungen boote, passiert nichts. Soll das so? Ich hab keine Möglichkeit eine ISO zu erstellen. Das funktioniert hoffentlich auch so.
Das Problem ist, dass du zwei TSS-Datenstrukturen hast. Einmal in gdt.c und einmal in common_handler.c. Die in gdt.c darf nicht static sein und die in common_handler.c sollte als extern deklariert sein.
gdt.c:
uint32_t tss[TSS_SIZE] = {0, 0, 0x10};
common_handler.c:
extern uint32_t tss[TSS_SIZE];
Das sollte zumindest einen Fehler beheben. Durch den restlichen Code steig ich dann auch nicht mehr durch. Die Initialisierung des Tastaturtreibers scheint aktivierte Interrupts zu benötigen. Zu dem Zeitpunkt ist das Multitasking allerdings noch nicht initialisiert, und du kriegst möglicherweise einen Timer IRQ. Da solltest du nochmal schauen, ob der korrekt behandelt wird.
Stört dich das eigentlich nicht, dass deine printf-Funktion nur 5 Ziffern von hexadezimalen Zahlen ausgibt?