MCPcopy Create free account
hub / github.com/F-Stack/f-stack / pmap_bootstrap_l2

Function pmap_bootstrap_l2

freebsd/arm64/arm64/pmap.c:885–912  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

883}
884
885static vm_offset_t
886pmap_bootstrap_l2(vm_offset_t l1pt, vm_offset_t va, vm_offset_t l2_start)
887{
888 vm_offset_t l2pt;
889 vm_paddr_t pa;
890 pd_entry_t *l1;
891 u_int l1_slot;
892
893 KASSERT((va & L1_OFFSET) == 0, ("Invalid virtual address"));
894
895 l1 = (pd_entry_t *)l1pt;
896 l1_slot = pmap_l1_index(va);
897 l2pt = l2_start;
898
899 for (; va < VM_MAX_KERNEL_ADDRESS; l1_slot++, va += L1_SIZE) {
900 KASSERT(l1_slot < Ln_ENTRIES, ("Invalid L1 index"));
901
902 pa = pmap_early_vtophys(l1pt, l2pt);
903 pmap_store(&l1[l1_slot],
904 (pa & ~Ln_TABLE_MASK) | L1_TABLE);
905 l2pt += PAGE_SIZE;
906 }
907
908 /* Clean the L2 page table */
909 memset((void *)l2_start, 0, l2pt - l2_start);
910
911 return l2pt;
912}
913
914static vm_offset_t
915pmap_bootstrap_l3(vm_offset_t l1pt, vm_offset_t va, vm_offset_t l3_start)

Callers 1

pmap_bootstrapFunction · 0.85

Calls 2

pmap_early_vtophysFunction · 0.85
memsetFunction · 0.85

Tested by

no test coverage detected