From a4e69e9e36ce0ce9db6deb6447407b8775b2a5d6 Mon Sep 17 00:00:00 2001 From: Nathan Giddings Date: Fri, 3 Mar 2023 04:53:25 -0600 Subject: [PATCH] Kernel marks its own text segment as read-only --- src/kernel.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/kernel.c b/src/kernel.c index a71d257..58825b7 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -30,6 +30,11 @@ void kernel_initialize(struct boot_info_t *boot_info) printf("%i\t\t\t%08x\t\t%u\n", boot_info->map.array[i].type, boot_info->map.array[i].location, boot_info->map.array[i].size); } + for(void *p = &_kernel_start; p < (void*)&_kernel_tend; p += page_size) + { + set_pte_type(p, page_table_levels - 1, PAGE_PRESENT); + } + memmap_insert_region(&boot_info->map, (physaddr_t)&_kernel_pstart, (physaddr_t)&_kernel_pend - (physaddr_t)&_kernel_pstart, M_UNAVAILABLE); if(initialize_page_map(&boot_info->map, (physaddr_t*)&_kernel_end, boot_info->memory_size, page_size)) {