3 #include <asm/boot_stage.h>
4 #include <asm/mm_defs.h>
5 #include <asm-generic/init_pagetable.h>
7 // define the initial page table layout
11 pte_t _lft[_PAGE_LEVEL_SIZE];
15 static struct kernel_map kernel_pt __section(".kpg");
16 export_symbol(debug, boot, kernel_pt);
18 static ptr_t boot_text
21 struct pt_alloc alloc;
25 init_pt_alloc(&alloc, to_kphysical(&kernel_pt), sizeof(kernel_pt));
26 init_ptw_state(&ptw, &alloc, kpt_alloc_table(&alloc));
28 pte = pte_mkhuge(mkpte_prot(KERNEL_DATA));
29 kpt_set_ptes(&ptw, 0, pte, L0T_SIZE, 1);
31 kpt_mktable_at(&ptw, KMAP, L0T_SIZE);
32 kpt_mktable_at(&ptw, VMAP, L0T_SIZE);
34 kpt_migrate_highmem(&ptw);
36 pte = mkpte(__ptr(ptw.root), KERNEL_PGTAB);
37 kpt_set_ptes(&ptw, VMS_SELF, pte, L0T_SIZE, 1);
39 return __ptr(ptw.root);
45 ptr_t kmap_pa = to_kphysical(&kernel_pt);
46 for (size_t i = 0; i < sizeof(kernel_pt); i++) {
47 ((u8_t*)kmap_pa)[i] = 0;