From 5b1460d6516940d285c554d6178ab52abf04312d Mon Sep 17 00:00:00 2001 From: Ada Christine Date: Thu, 30 Dec 2021 11:13:24 +0000 Subject: pass the whole boot data struct to memory_init for my sanity --- kc/core/kc_main.c | 2 +- kc/core/memory.c | 19 +++++++++++-------- kc/core/memory.h | 3 ++- 3 files changed, 14 insertions(+), 10 deletions(-) (limited to 'kc/core') diff --git a/kc/core/kc_main.c b/kc/core/kc_main.c index 814b0e0..d8ccc11 100644 --- a/kc/core/kc_main.c +++ b/kc/core/kc_main.c @@ -16,7 +16,7 @@ unsigned long kc_main(struct kc_boot_data *data) cpu_init(); serial_init(); kputs(" i'm in 3333\r\n"); - memory_init(data->phys_memory_map.base, data->phys_memory_map.entries); + memory_init(data); halt(); } diff --git a/kc/core/memory.c b/kc/core/memory.c index 920fc87..1e405bc 100644 --- a/kc/core/memory.c +++ b/kc/core/memory.c @@ -4,8 +4,6 @@ #include -#include -#include #include /* kernel virtual space guarantees @@ -92,7 +90,7 @@ static struct memory_range init_grab_pages(struct memory_range *ranges, { struct memory_range request = {SYSTEM_MEMORY, 0, - align_next(size, PAGE_SIZE)}; + align_next(size, page_size(1))}; for (int i = 0; i < count; i++) { @@ -349,15 +347,15 @@ static void *page_map_at(void *vaddr, #define KERNEL_OBJECT_SPACE_EXTENT 0x1000000 // 16MiB for kernel object space? -void memory_init(struct memory_range *ranges, size_t count) +void memory_init(struct kc_boot_data *boot_data) { - init_create_page_array(ranges, count); + init_create_page_array(boot_data->phys_memory_map.base, + boot_data->phys_memory_map.entries); core_code_space = init_system_space(&kc_text_begin, &kc_text_end); core_static_space = init_system_space(&kc_data_begin, &kc_data_end); - core_object_space = init_anonymous_space(&kc_data_end, - (void *)page_align(&kc_data_end + KERNEL_OBJECT_SPACE_EXTENT, - 2)); + core_object_space = init_anonymous_space(boot_data->object_space.base, + (void *)page_align(&kc_data_end + KERNEL_OBJECT_SPACE_EXTENT, 2)); root_memory_space = &core_code_space; @@ -367,6 +365,11 @@ void memory_init(struct memory_range *ranges, size_t count) core_static_space.next = &core_object_space; core_object_space.prev = &core_static_space; core_object_space.next = NULL; + + // XXX: testing testing 123 + + char *test = (char *)core_object_space.head - page_size(1); + *test = 'a'; } void *page_map(phys_addr_t paddr, enum page_map_flags flags) diff --git a/kc/core/memory.h b/kc/core/memory.h index c882d6a..a4488cf 100644 --- a/kc/core/memory.h +++ b/kc/core/memory.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include @@ -20,7 +21,7 @@ enum page_map_flags SIZE_MASK = 0xc, }; -void memory_init(struct memory_range *ranges, size_t count); +void memory_init(struct kc_boot_data *boot_data); void *memcpy(void *dest, const void *src, size_t size); void *memmove(void *dest, const void *src, size_t size); -- cgit v1.3.1-1-g115d