summaryrefslogtreecommitdiff
path: root/kc/core/kc_main.c
diff options
context:
space:
mode:
authorAda Christine <adachristine18@gmail.com>2021-12-26 01:12:31 +0000
committerAda Christine <adachristine18@gmail.com>2021-12-26 01:12:31 +0000
commit2b0734bdc362d5f453e5bfe833b534298072a56a (patch)
tree6007e56e35ef448b43c1de3e7e5998fd2ca360de /kc/core/kc_main.c
parent257bdba7ddcc8d9893927c458e3c6e377c4e8d9c (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.c52
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();
}
+