summaryrefslogtreecommitdiff
path: root/kc
diff options
context:
space:
mode:
Diffstat (limited to 'kc')
-rw-r--r--kc/core/kc_main.c11
-rw-r--r--kc/core/memory.c12
-rw-r--r--kc/core/memory.h2
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);