summaryrefslogtreecommitdiff
path: root/src/kernel/main.c
diff options
context:
space:
mode:
authordzwdz2021-07-19 18:17:50 +0200
committerdzwdz2021-07-19 18:17:50 +0200
commitf2a0c7595bf805cd53001984495e4db0268f5f98 (patch)
tree95900e23e386beeea8dfd17a102f7360b66adf73 /src/kernel/main.c
parentc9ad4bfbf875b0d23e1f7bf7d5aff2d149ba4fd7 (diff)
very basic paging
Diffstat (limited to 'src/kernel/main.c')
-rw-r--r--src/kernel/main.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/kernel/main.c b/src/kernel/main.c
index 7f49fed..1b5e504 100644
--- a/src/kernel/main.c
+++ b/src/kernel/main.c
@@ -8,10 +8,26 @@
void r3_test();
+static void setup_paging() {
+ struct pagedir *dir = pagedir_new();
+
+ // map VGA
+ pagedir_map(dir, 0xB8000, 0xB8000, true, true);
+
+ // map the kernel
+ for (size_t p = 0x100000; p < &_bss_end; p += PAGE_SIZE)
+ pagedir_map(dir, p, p, false, true); // yes, .text is writeable too
+
+ pagedir_use(dir);
+}
+
void kmain(struct kmain_info info) {
log_const("mem...");
mem_init(&info);
+ log_const("paging...");
+ setup_paging();
+
log_const("creating process...");
void *init_addr = (void*)0x200000;