diff --git a/arch/x86/kernel/entry.asm b/arch/x86/kernel/entry.asm index bcf7b8d..3241974 100644 --- a/arch/x86/kernel/entry.asm +++ b/arch/x86/kernel/entry.asm @@ -331,7 +331,8 @@ global boot_map boot_map: boot_pgd: DD boot_pgt + 0x103 ; PG_GLOBAL | PG_RW | PG_PRESENT - times 1023 DD 0 ; PAGE_MAP_ENTRIES - 1 + times 1022 DD 0 ; PAGE_MAP_ENTRIES - 2 + DD boot_pgd + 0x103 ; PG_GLOBAL | PG_RW | PG_PRESENT (self-reference) boot_pgt: %assign i 0 %rep 1024 ; PAGE_MAP_ENTRIES diff --git a/arch/x86/mm/page.c b/arch/x86/mm/page.c index 201afaf..0797336 100644 --- a/arch/x86/mm/page.c +++ b/arch/x86/mm/page.c @@ -219,9 +219,6 @@ int page_init() irq_uninstall_handler(14); irq_install_handler(14, page_fault_handler); - // create self-reference - boot_map[PAGE_MAP_ENTRIES-1] = (size_t) &boot_map | PG_PRESENT | PG_RW; - // map kernel npages = PAGE_FLOOR((size_t) &kernel_end - (size_t) &kernel_start) >> PAGE_BITS; page_map((size_t) &kernel_start, (size_t) &kernel_start, npages, PG_PRESENT | PG_RW | PG_GLOBAL);