diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/include/common.h | 4 | ||||
| -rw-r--r-- | kernel/mm/physical_mm/physical_mm.c | 11 | 
2 files changed, 12 insertions, 3 deletions
| diff --git a/kernel/include/common.h b/kernel/include/common.h index 52076fa..041d3b1 100644 --- a/kernel/include/common.h +++ b/kernel/include/common.h @@ -25,4 +25,8 @@  #define KiB 1024  #define MiB (KiB * KiB) +#define ASSERT_NOT_REACHED()                                                  \ +  printk("ASSERTION FAILED:", "[%s] SHOULD NOT BE REACHED.", __func__);       \ +  halt(); +  #endif diff --git a/kernel/mm/physical_mm/physical_mm.c b/kernel/mm/physical_mm/physical_mm.c index d57cc83..407aad6 100644 --- a/kernel/mm/physical_mm/physical_mm.c +++ b/kernel/mm/physical_mm/physical_mm.c @@ -10,6 +10,8 @@  #include <mm/memory_map.h>  #include <mm/physical_mm.h> +#include <kernel/halt.h> +  extern uint32_t kernel_start;  extern uint32_t kernel_end; @@ -20,14 +22,17 @@ void  physical_mm_init(void)  {    free_memory_regions_t *free_memory_regions = memory_map_get_free_regions(); -  printk("physical_mm", "Free Memory Regions:"); + +  /* TODO: Initialize these free memory regions */ +  printk("\nphysical_mm", "Free Memory Regions:");    for (int i = 0; i < free_memory_regions->n_regions; i++)      printk("physical_mm",             "start: 0x%.08x | length: 0x%.08x",             free_memory_regions->region_list[i]->addr_low,             free_memory_regions->region_list[i]->len_low); -  printk("physical_mm", "Kernel region:"); +  /* TODO: De-initialize region used by the kernel */ +  printk("\nphysical_mm", "Kernel region:");    printk("physical_mm", "Start: 0x%x", &kernel_start);    printk("physical_mm", "End:   0x%x", &kernel_end);    printk("physical_mm", @@ -74,6 +79,6 @@ physical_mm_find_first_free(void)          if (physical_mm_test_bit(i * BITMAP_ENTRY_SIZE + j))            return i * BITMAP_ENTRY_SIZE + j; -  /* TODO: Assert not reached, or something similar */ +  ASSERT_NOT_REACHED();    return -1;  } | 
