From 0451ead172447528ece5fb0fcbb461a986962532 Mon Sep 17 00:00:00 2001 From: Lizzy Fleckenstein Date: Sun, 10 Dec 2023 16:06:55 +0100 Subject: init() restructure --- stage3/main.c | 64 ++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 35 insertions(+), 29 deletions(-) (limited to 'stage3/main.c') diff --git a/stage3/main.c b/stage3/main.c index 4f33c46..fb09dbb 100644 --- a/stage3/main.c +++ b/stage3/main.c @@ -8,8 +8,6 @@ void clear_screen(); // framebuffer.asm -void kmain(); - void init() { clear_screen(); @@ -20,6 +18,16 @@ void init() #define MMAP for (MemRegion *mreg = (void *) 0x500; mreg->start != nil; mreg++) + // backup memory map + usize n_mreg = 0; + MMAP n_mreg++; + MemRegion mregs[n_mreg]; + { + usize i = 0; + MMAP mregs[i++] = *mreg; + } + + // setup paging MMAP page_region(mreg); page_region(&(MemRegion) { @@ -28,39 +36,37 @@ void init() .used = MEM_RESERVED, }); + // heap init MMAP heap_add_region(mreg); - kmain(); - halt(); -} + // gfx init + gfx_set_area(0, 0, gfx_info->width, gfx_info->height, 0xFF000000); -void charset_demo() -{ - const u8 max = '~' - '!' + 1; + // charset demo + { + const u8 max = '~' - '!' + 1; - char str[max + 1]; - str[max] = '\0'; + char str[max + 1]; + str[max] = '\0'; - for (u8 i = 0; i < max; i++) - str[i] = i + '!'; + for (u8 i = 0; i < max; i++) + str[i] = i + '!'; - print("charset demo:\n"); - print(str); - print("\n"); -} + print("charset demo:\n"); + print(str); + print("\n"); + } -void kmain() -{ - gfx_set_area(0, 0, gfx_info->width, gfx_info->height, 0xFF000000); - charset_demo(); + // memory map + print("memory map:\n"); + for (usize i = 0; i < n_mreg; i++) { + print_num((u64) mregs[i].start, 16, 16); + print(" | "); + print_num((u64) mregs[i].start + mregs[i].size, 16, 16); + print(" | "); + print_num(mregs[i].used, 10, 0); + print("\n"); + } - print( - "\n" - "#include \n\n" - "int main()\n{\n" - "\tprintf(\"hello, world\\n\");\n" - "\treturn 0;\n" - "}\n" - "\n" - ); + halt(); } -- cgit v1.2.3