diff options
author | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2025-07-29 21:40:45 +0200 |
---|---|---|
committer | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2025-07-29 21:40:45 +0200 |
commit | 0a817a5a74c328229f8a732fc3ec22d8fd7dc20d (patch) | |
tree | a5f906687a28420a2ccb29c788e6779f221e7a75 /src/main.c | |
parent | ca84afb315e813f08d725082320d40969b9f93e4 (diff) |
Some work on keeping track of memory, and providing more info in panics
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 57 |
1 files changed, 3 insertions, 54 deletions
@@ -1,66 +1,15 @@ #include "aplos.h" -static void welcome(void); -static void print_memmap(struct boot_info *); -static void print_size(uint64_t); - void main(struct boot_info *info) { screen_init(&info->framebuffer); - welcome(); + print(u8"Starting ☺☻☺☻☺☻☺☻☺☻\n"); print(u8"CPU count: %u64\n", cpu_count()); - print_memmap(info); setup_descriptors(); setup_paging(info); -} - -static void -welcome(void) -{ - print(u8"Starting ☺☻☺☻☺☻☺☻☺☻\n"); -} - -static void -print_memmap(struct boot_info *info) -{ - print(u8"Usable memory: "); - uint64_t total = 0; - for(uint64_t i = 0; i < info->memmap_count; i++) - total += info->memmaps[i].size; - print_size(total); - print(u8"\n"); - - for(uint64_t i = 0; i < info->memmap_count; i++){ - struct memmap *m = &info->memmaps[i]; - print(u8"%p - %p (", m->start, m->start + m->size); - print_size(m->size); - print(u8")\n"); - } -} - -static void -print_size(uint64_t size) -{ - uint64_t gb, mb, kb, b; - gb = size >> 30; size -= gb << 30; - mb = size >> 20; size -= mb << 20; - kb = size >> 10; size -= kb << 10; - b = size; - - int printed = 0; - -#define P(what, spec, force) \ - if(what || (force && !printed)){ \ - if(printed) \ - print(u8" + "); \ - printed = 1; \ - print(u8"%u64 " spec, what); \ - } - P(gb, "GB", 0); - P(mb, "MB", 0); - P(kb, "KB", 0); - P(b, "B", 1); + int *x = (int*)0xBEEF; + *x = 4; /* This should give us a page fault, and trigger the panic function */ } |