Kernel marks its own text segment as read-only
This commit is contained in:
@@ -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);
|
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);
|
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))
|
if(initialize_page_map(&boot_info->map, (physaddr_t*)&_kernel_end, boot_info->memory_size, page_size))
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user