X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/69777bdcab284335651a8002e2896f3862fa423d..c166bd62fbb907f95f79f621e2a2fb4fdde08e01:/lunaix-os/arch/i386/boot/kpt_setup.c?ds=inline diff --git a/lunaix-os/arch/i386/boot/kpt_setup.c b/lunaix-os/arch/i386/boot/kpt_setup.c index 26a348d..c353d77 100644 --- a/lunaix-os/arch/i386/boot/kpt_setup.c +++ b/lunaix-os/arch/i386/boot/kpt_setup.c @@ -17,6 +17,7 @@ extern u8_t __kboot_end[]; // define the initial page table layout struct kernel_map { pte_t l0t[_PAGE_LEVEL_SIZE]; + pte_t pg_mnt[_PAGE_LEVEL_SIZE]; struct { pte_t _lft[_PAGE_LEVEL_SIZE]; @@ -86,6 +87,10 @@ _init_page() // XXX: Mapping the kernel .rodata section? + // set mount point + pte_t* kmntep = (pte_t*) &kpt_pa->l0t[pfn_at(PG_MOUNT_1, L0T_SIZE)]; + set_pte(kmntep, mkpte((ptr_t)kpt_pa->pg_mnt, KERNEL_DATA)); + // Build up self-reference pte = mkpte_root((ptr_t)kpt_pa, KERNEL_DATA); set_pte(boot_l0tep + _PAGE_LEVEL_MASK, pte);