diff options
| author | Ada Christine <adachristine18@gmail.com> | 2021-12-26 01:12:31 +0000 |
|---|---|---|
| committer | Ada Christine <adachristine18@gmail.com> | 2021-12-26 01:12:31 +0000 |
| commit | 2b0734bdc362d5f453e5bfe833b534298072a56a (patch) | |
| tree | 6007e56e35ef448b43c1de3e7e5998fd2ca360de /kc/core/kc_main.c | |
| parent | 257bdba7ddcc8d9893927c458e3c6e377c4e8d9c (diff) | |
everything builds, probably doesn't work. commit in preparation for a merge
Diffstat (limited to 'kc/core/kc_main.c')
| -rw-r--r-- | kc/core/kc_main.c | 52 |
1 files changed, 2 insertions, 50 deletions
diff --git a/kc/core/kc_main.c b/kc/core/kc_main.c index 5eecaf2..8242227 100644 --- a/kc/core/kc_main.c +++ b/kc/core/kc_main.c @@ -4,66 +4,18 @@ #include "memory.h" #include "panic.h" -#include <loader/data_efi.h> - #include <kernel/entry.h> #include <stdbool.h> #include <stddef.h> #include <stdint.h> -#include <stdnoreturn.h> -static void efi_memory_init(struct efi_memory_map_data *map) -{ - // FIXME: bad girl shit: overwriting on aliased pointers. - // this is a temporary solution to shortcomings with - // loader boot data. it's sort-of OK because the memory_range struct - // is smaller than EFI_MEMORY_DESCRIPTOR. it's still not good. - struct memory_range *ranges = (struct memory_range *)map->data; - int entries = map->size / map->descsize; - - for (int i = 0; i < entries; i++) - { - EFI_MEMORY_DESCRIPTOR *desc; - desc = (EFI_MEMORY_DESCRIPTOR *)((char *)map->data + i * map->descsize); - - enum memory_range_type type; - phys_addr_t base; - size_t size; - - base = desc->PhysicalStart; - size = desc->NumberOfPages * EFI_PAGE_SIZE; - - switch (desc->Type) - { - case EfiConventionalMemory: - case EfiBootServicesData: - case EfiBootServicesCode: - case EfiLoaderData: - case EfiLoaderCode: - type = AVAILABLE_MEMORY; - break; - case SystemMemoryType: - type = SYSTEM_MEMORY; - break; - default: - type = RESERVED_MEMORY; - } - - ranges[i].type = type; - ranges[i].base = base; - ranges[i].size = size; - } - - memory_init(ranges, entries); -} - -noreturn void kernel_entry(struct efi_boot_data *data) +unsigned long kc_main(void *data) { (void)data; cpu_init(); serial_init(); kputs("<hacker voice> i'm in\r\n"); - efi_memory_init(data->memory_map); halt(); } + |
