diff options
Diffstat (limited to 'kc')
| -rw-r--r-- | kc/core/kc_main.c | 11 | ||||
| -rw-r--r-- | kc/core/memory.c | 12 | ||||
| -rw-r--r-- | kc/core/memory.h | 2 |
3 files changed, 19 insertions, 6 deletions
diff --git a/kc/core/kc_main.c b/kc/core/kc_main.c index 68fcb0a..cfbc564 100644 --- a/kc/core/kc_main.c +++ b/kc/core/kc_main.c @@ -14,14 +14,23 @@ //TODO: initialize vm before cpu? // alternatively, split memory and/or cpu initialization steps +static struct kc_boot_data *boot_data; + unsigned long kc_main(struct kc_boot_data *data) { + boot_data = data; + cpu_init(); serial_init(); kputs("<hacker voice> i'm in 3333\r\n"); - memory_init(data); + memory_init(); task_init(); return 0; } +struct kc_boot_data *get_boot_data() +{ + return boot_data; +} + diff --git a/kc/core/memory.c b/kc/core/memory.c index ba0ca57..2d5dd75 100644 --- a/kc/core/memory.c +++ b/kc/core/memory.c @@ -329,8 +329,10 @@ static void init_vm_node( } } -void memory_init(struct kc_boot_data *boot_data) +void memory_init(void) { + struct kc_boot_data *boot_data = get_boot_data(); + init_create_page_array( boot_data->phys_memory_map.base, boot_data->phys_memory_map.entries); @@ -339,21 +341,23 @@ void memory_init(struct kc_boot_data *boot_data) boot_data->object_space.size + (uintptr_t)boot_data->object_space.base, 1); - kputs("vm node 1\n"); + kputs("static vm node 1\n"); init_vm_node( &core_image_node, &core_image_object, &kc_image_base, object_space_head); core_image_node.object->handler = core_image_handler; - kputs("vm node 2\n"); + + kputs("static vm node 2\n"); init_vm_node( &core_vmobject_node, &core_vmobject, object_space_head, (char *)object_space_head + vm_object_space_size); core_vmobject_node.object->handler = core_vmobject_handler; - kputs("vm node 3\n"); + + kputs("static vm node 3\n"); init_vm_node(&core_pagemaps_node, NULL, vm_temp, (void *)-1); vm_next_free = (char *)object_space_head + vm_object_space_size; } diff --git a/kc/core/memory.h b/kc/core/memory.h index 23b014d..5deda81 100644 --- a/kc/core/memory.h +++ b/kc/core/memory.h @@ -21,7 +21,7 @@ enum page_map_flags SIZE_MASK = 0xc, }; -void memory_init(struct kc_boot_data *boot_data); +void memory_init(void); void *page_map(phys_addr_t paddr, enum page_map_flags flags); void page_unmap(void *vaddr); |
