diff options
author | dzwdz | 2021-07-19 18:17:50 +0200 |
---|---|---|
committer | dzwdz | 2021-07-19 18:17:50 +0200 |
commit | f2a0c7595bf805cd53001984495e4db0268f5f98 (patch) | |
tree | 95900e23e386beeea8dfd17a102f7360b66adf73 /src/kernel/main.c | |
parent | c9ad4bfbf875b0d23e1f7bf7d5aff2d149ba4fd7 (diff) |
very basic paging
Diffstat (limited to 'src/kernel/main.c')
-rw-r--r-- | src/kernel/main.c | 16 |
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; |