diff options
| author | Ada Christine <adachristine18@gmail.com> | 2021-12-30 11:13:24 +0000 |
|---|---|---|
| committer | Ada Christine <adachristine18@gmail.com> | 2021-12-30 11:13:24 +0000 |
| commit | 5b1460d6516940d285c554d6178ab52abf04312d (patch) | |
| tree | 4647b5f4c82cefe03cbc30043bf68c9911268135 /kc | |
| parent | c3c445fa6fc7d99ffbdd1ed8842bbe4a3b74e61e (diff) | |
pass the whole boot data struct to memory_init for my sanity
Diffstat (limited to 'kc')
| -rw-r--r-- | kc/core/kc_main.c | 2 | ||||
| -rw-r--r-- | kc/core/memory.c | 19 | ||||
| -rw-r--r-- | kc/core/memory.h | 3 |
3 files changed, 14 insertions, 10 deletions
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("<hacker voice> 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 <stdint.h> -#include <kernel/entry.h> -#include <kernel/memory/paging.h> #include <kernel/component.h> /* 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 <kernel/entry.h> #include <kernel/memory/paging.h> #include <kernel/memory/range.h> @@ -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); |
