diff --git a/kernel/arch/gdt/gdt_entry.c b/kernel/arch/gdt/gdt_entry.c index 147ce47..3f32925 100644 --- a/kernel/arch/gdt/gdt_entry.c +++ b/kernel/arch/gdt/gdt_entry.c @@ -1,9 +1,14 @@ #include +#include +#include #ifdef __TESTING__ #include #endif + +uint64_t gdt[GDT_SIZE]; + uint64_t create_descriptor(uint32_t base, uint32_t limit, uint16_t flag) { uint64_t descriptor; @@ -21,7 +26,7 @@ uint64_t create_descriptor(uint32_t base, uint32_t limit, uint16_t flag) return descriptor; } -void gdt_init(uint64_t* gdt) +void gdt_init(void) { #ifdef __TESTING__ kinfo("Initializing the GDT"); @@ -36,5 +41,13 @@ void gdt_init(uint64_t* gdt) reloadSegments(); #ifdef __TESTING__ kinfo("Initialized the GDT"); + dump_gdt(); #endif } + +void dump_gdt(void) +{ + for (int i = 0; i < GDT_SIZE; i++) { + printf("GDT_ENTRY %d: %1 | %2\n", i, gdt[i], gdt[i]); + } +} diff --git a/kernel/include/kernel/x86/gdt.h b/kernel/include/kernel/x86/gdt.h index 47d1af9..1cfcfea 100644 --- a/kernel/include/kernel/x86/gdt.h +++ b/kernel/include/kernel/x86/gdt.h @@ -56,8 +56,11 @@ void reloadSegments(); uint64_t create_descriptor(uint32_t base, uint32_t limit, uint16_t flag); -void gdt_init(uint64_t* gdt); +void gdt_init(void); + +void dump_gdt(void); #endif + diff --git a/kernel/kmain.c b/kernel/kmain.c index ff15439..a174788 100644 --- a/kernel/kmain.c +++ b/kernel/kmain.c @@ -8,15 +8,13 @@ #include #include -uint64_t gdt[GDT_SIZE]; - void kmain(void) { #ifdef __TESTING__ // important components should be declared first, but if we're testing we want to log all of that terminal_initialize(); serial_initialize(); #endif - gdt_init(gdt); + gdt_init(); idt_init(); PIC_remap(0x20, 0x28); @@ -24,8 +22,4 @@ void kmain(void) terminal_initialize(); serial_initialize(); #endif - - - printf("Integer: %1\n", gdt[1]); - printf("Hex Int: %x\n", 2); } diff --git a/libc/stdio/putchar.c b/libc/stdio/putchar.c index 32c1ecf..abbd6e9 100644 --- a/libc/stdio/putchar.c +++ b/libc/stdio/putchar.c @@ -2,12 +2,18 @@ #if defined(__is_libk) #include +#ifdef __TESTING__ +#include +#endif #endif int putchar(int ic) { #if defined(__is_libk) char c = (char) ic; terminal_write(&c, sizeof(c)); +#ifdef __TESTING__ + serial_write(&c, sizeof(c)); +#endif #else // TODO: Implement stdio and the write system call. #endif