3 #include <asm/boot_stage.h>
4 #include <asm/mm_defs.h>
5 #include <asm-generic/init_pagetable.h>
12 pte_t _lft[_PAGE_LEVEL_SIZE];
16 static struct kernel_map kpt __section(".kpg");
17 export_symbol(debug, boot, kpt);
19 static ptr_t boot_text
22 struct pt_alloc alloc;
26 init_pt_alloc(&alloc, to_kphysical(&kpt), sizeof(kpt));
27 init_ptw_state(&ptw, &alloc, kpt_alloc_table(&alloc));
29 pte = pte_mkhuge(mkpte_prot(KERNEL_PGTAB));
30 kpt_set_ptes(&ptw, 0, pte, L1T_SIZE, 4);
32 kpt_mktable_at(&ptw, VMAP, L0T_SIZE);
35 size_t gran = L3T_SIZE;
37 size_t gran = L2T_SIZE;
40 kpt_mktable_at(&ptw, KMAP, gran);
41 kpt_mktable_at(&ptw, PMAP, gran);
43 kpt_migrate_highmem(&ptw);
45 pte = mkpte(__ptr(ptw.root), KERNEL_PGTAB);
46 kpt_set_ptes(&ptw, VMS_SELF, pte, L0T_SIZE, 1);
48 return __ptr(ptw.root);
54 asm volatile("movq %1, %%rdi\n"
55 "rep stosb\n" ::"c"(sizeof(kpt)),
56 "r"(to_kphysical(&kpt)),