diff --git a/src/kernel.h b/src/kernel.h index 58504c0..e0816ab 100644 --- a/src/kernel.h +++ b/src/kernel.h @@ -20,13 +20,13 @@ enum ErrorCodes #include "io/term/printf.h" #include "idt/idt.h" -//#define DEBUG(log, ...) fctprintf((void*)&skputc, 0, "debug: [%s]: " log "\r\n", __FILE__, ##__VA_ARGS__) +#define DEBUG(log, ...) fctprintf((void*)&skputc, 0, "debug: [%s]: " log "\r\n", __FILE__, ##__VA_ARGS__) -#define DEBUG(log, ...) \ +/* #define DEBUG(log, ...) \ printf("debug: [%s]: " log "\r\n", __FILE__, ##__VA_ARGS__); \ fctprintf((void*)&skputc, 0, "debug: [%s]: " log "\r\n", __FILE__, ##__VA_ARGS__) - + */ #define DIE_DEBUG(str) fctprintf((void*)&skputc, 0, str) diff --git a/src/kmain.c b/src/kmain.c index a2726d0..02a2644 100644 --- a/src/kmain.c +++ b/src/kmain.c @@ -79,6 +79,12 @@ void kmain() boot_ctx.hhdm = hhdm_request.response ? hhdm_request.response : NULL; boot_ctx.kaddr = kerneladdr_request.response ? kerneladdr_request.response : NULL; + pmm_init(boot_ctx.mmap, boot_ctx.hhdm); + + // Remap kernel , HHDM and framebuffer + paging_init(boot_ctx.kaddr, boot_ctx.fb); + + uint32_t bgColor = 0x252525; ft_ctx = flanterm_fb_init( NULL, NULL, @@ -88,7 +94,7 @@ void kmain() boot_ctx.fb->blue_mask_size, boot_ctx.fb->blue_mask_shift, NULL, NULL, NULL, - NULL, NULL, + &bgColor, NULL, // &bgColor NULL, NULL, NULL, 0, 0, 1, 0, 0, @@ -106,11 +112,6 @@ void kmain() gdt_init(); idt_init(); timer_init(); - - pmm_init(boot_ctx.mmap, boot_ctx.hhdm); - - // Remap kernel , HHDM and framebuffer - paging_init(boot_ctx.kaddr, boot_ctx.fb); kheap_init(); @@ -132,9 +133,11 @@ void kmain() keyboard_init(FR); //term_init(); - printf(PEPPEROS_SPLASH); + //printf(PEPPEROS_SPLASH); - printf("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur eu diam id sem tincidunt vestibulum. Etiam sed congue nisl, vitae aliquet orci. Donec magna turpis, semper sed ipsum eget, semper blandit dolor. Morbi faucibus posuere sapien. Vestibulum aliquet mi vel orci finibus, vestibulum rhoncus tellus sagittis. Vivamus a arcu suscipit sem iaculis volutpat vel nec est. Nulla malesuada, urna vel pretium pretium, enim tortor pulvinar velit, porttitor dictum lectus turpis id tortor. Quisque egestas ultricies lorem, egestas ultrices tellus elementum porta. Fusce consequat nisi in diam placerat fermentum. Suspendisse tempus turpis nec turpis condimentum fringilla. Maecenas nec orci pharetra, feugiat enim vel, viverra neque. Vivamus placerat purus in tincidunt ultricies. Pellentesque vel mi molestie, congue nibh nec, cursus nisl. Cras dapibus lectus mauris, sed interdum risus tristique non. "); + //printf("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur eu diam id sem tincidunt vestibulum. Etiam sed congue nisl, vitae aliquet orci. Donec magna turpis, semper sed ipsum eget, semper blandit dolor. Morbi faucibus posuere sapien. Vestibulum aliquet mi vel orci finibus, vestibulum rhoncus tellus sagittis. Vivamus a arcu suscipit sem iaculis volutpat vel nec est. Nulla malesuada, urna vel pretium pretium, enim tortor pulvinar velit, porttitor dictum lectus turpis id tortor. Quisque egestas ultricies lorem, egestas ultrices tellus elementum porta. Fusce consequat nisi in diam placerat fermentum. Suspendisse tempus turpis nec turpis condimentum fringilla. Maecenas nec orci pharetra, feugiat enim vel, viverra neque. Vivamus placerat purus in tincidunt ultricies. Pellentesque vel mi molestie, congue nibh nec, cursus nisl. Cras dapibus lectus mauris, sed interdum risus tristique non. "); + + flanterm_write(ft_ctx, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur eu diam id sem tincidunt vestibulum. Etiam sed congue nisl, vitae aliquet orci. Donec magna turpis, semper sed ipsum eget, semper blandit dolor. Morbi faucibus posuere sapien. Vestibulum aliquet mi vel orci finibus, vestibulum rhoncus tellus sagittis. Vivamus a arcu suscipit sem iaculis volutpat vel nec est. Nulla malesuada, urna vel pretium pretium, enim tortor pulvinar velit, porttitor dictum lectus turpis id tortor. Quisque egestas ultricies lorem, egestas ultrices tellus elementum porta. Fusce consequat nisi in diam placerat fermentum. Suspendisse tempus turpis nec turpis condimentum fringilla. Maecenas nec orci pharetra, feugiat enim vel, viverra neque. Vivamus placerat purus in tincidunt ultricies. Pellentesque vel mi molestie, congue nibh nec, cursus nisl. Cras dapibus lectus mauris, sed interdum risus tristique non.", sizeof("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur eu diam id sem tincidunt vestibulum. Etiam sed congue nisl, vitae aliquet orci. Donec magna turpis, semper sed ipsum eget, semper blandit dolor. Morbi faucibus posuere sapien. Vestibulum aliquet mi vel orci finibus, vestibulum rhoncus tellus sagittis. Vivamus a arcu suscipit sem iaculis volutpat vel nec est. Nulla malesuada, urna vel pretium pretium, enim tortor pulvinar velit, porttitor dictum lectus turpis id tortor. Quisque egestas ultricies lorem, egestas ultrices tellus elementum porta. Fusce consequat nisi in diam placerat fermentum. Suspendisse tempus turpis nec turpis condimentum fringilla. Maecenas nec orci pharetra, feugiat enim vel, viverra neque. Vivamus placerat purus in tincidunt ultricies. Pellentesque vel mi molestie, congue nibh nec, cursus nisl. Cras dapibus lectus mauris, sed interdum risus tristique non. ")); idle(); } diff --git a/src/mem/paging/paging.c b/src/mem/paging/paging.c index c208e53..d4db61a 100644 --- a/src/mem/paging/paging.c +++ b/src/mem/paging/paging.c @@ -187,6 +187,14 @@ void paging_init() } DEBUG("Mapped %u pages for framebuffer", page_count); + // test for flanterm + // When 10 pages are mapped, SOMETIMES (1 out of 50 times) it prints everything without problem! + // Other times it prints garbage (almost full cursors) and/or panics. +/* for (uint64_t i=0; i<10; i++) + { + paging_map_page(kernel_pml4, 0, kernel_phys_base+KERNEL_SIZE+i*PAGE_SIZE, PTE_WRITABLE); + } */ + // Finally, we load the physical address of our PML4 (root table) into cr3 load_cr3(VIRT_TO_PHYS(kernel_pml4)); DEBUG("cr3 loaded, we're still alive");