From dae0a3cbf6dba6fc537f943362021f4d8ffcd859 Mon Sep 17 00:00:00 2001 From: Carlos Maiolino Date: Tue, 7 Oct 2025 08:16:03 +0200 Subject: mm: enable paging and add some test code Enable paging in the CPU and add some testing code to check virtual addresses are being redirected. Signed-off-by: Carlos Maiolino --- src/kernel.c | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) (limited to 'src/kernel.c') diff --git a/src/kernel.c b/src/kernel.c index 1605191..01de04f 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -6,6 +6,9 @@ #include #include #include +#include + +static struct page_directory *kernel_directory; void start_kernel() { @@ -16,19 +19,33 @@ void start_kernel() kernel_heap_init(); interrupts_init(); + kernel_directory = paging_new_directory(PAGING_IS_WRITABLE | + PAGING_IS_PRESENT | + PAGING_USER_ACCESS); + + paging_switch(kernel_directory); + + char *ptr = kzalloc(4096); + char *ptr2; + + paging_map_vaddr(kernel_directory, (void *)0x1000, + ptr, + (PAGING_USER_ACCESS | + PAGING_IS_PRESENT | PAGING_IS_WRITABLE)); + + enable_paging(); enable_interrupts(); + ptr2 = (char *) 0x1000; + ptr[0] = 'A'; + vprintl(ptr); + vprintl(ptr2); - void *ptr = kmalloc(50); - void *ptr2 = kmalloc(5000); - void *ptr3 = kmalloc(5600); + ptr2[1] = 'B'; + vprintl("new ptr\n"); + vprintl(ptr); + vprintl(ptr2); - *((int *)ptr) = 11; kfree(ptr); - void *ptr4 = kmalloc(50); - *((int *)ptr2) = 22; - *((int *)ptr3) = 33; - *((int *)ptr4) = 44; - if (ptr || ptr2 || ptr3 || ptr4) {} } -- cgit v1.2.3