- // kernel .text
- pfn_t ktext_end = pfn(to_kphysical(__far(__kexec_text_end)));
- pfn_t i = pfn(to_kphysical(kstart));
-
- klptep += i;
- pte = pte_setprot(pte, KERNEL_EXEC);
- for (; i < ktext_end; i++) {
- pte = pte_setpaddr(pte, page_addr(i));
- set_pte(klptep, pte);
-
- klptep++;
- }
-
- pfn_t kimg_end = pfn(to_kphysical(__far(__kexec_end)));
-
- // all remaining kernel sections
- pte = pte_setprot(pte, KERNEL_DATA);
- for (; i < kimg_end; i++) {
- pte = pte_setpaddr(pte, page_addr(i));
- set_pte(klptep, pte);
-
- klptep++;
- }
-
- // Build up self-reference
- lvl_i = va_level_index(VMS_SELF, L0T_SIZE);
- pte = mkpte_root(__ptr(kpt_pa), KERNEL_DATA);
- set_pte(boot_l0tep + lvl_i, pte);