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

Function pmap_get_tables

freebsd/arm64/arm64/pmap.c:601–642  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

599}
600
601bool
602pmap_get_tables(pmap_t pmap, vm_offset_t va, pd_entry_t **l0, pd_entry_t **l1,
603 pd_entry_t **l2, pt_entry_t **l3)
604{
605 pd_entry_t *l0p, *l1p, *l2p;
606
607 if (pmap->pm_l0 == NULL)
608 return (false);
609
610 l0p = pmap_l0(pmap, va);
611 *l0 = l0p;
612
613 if ((pmap_load(l0p) & ATTR_DESCR_MASK) != L0_TABLE)
614 return (false);
615
616 l1p = pmap_l0_to_l1(l0p, va);
617 *l1 = l1p;
618
619 if ((pmap_load(l1p) & ATTR_DESCR_MASK) == L1_BLOCK) {
620 *l2 = NULL;
621 *l3 = NULL;
622 return (true);
623 }
624
625 if ((pmap_load(l1p) & ATTR_DESCR_MASK) != L1_TABLE)
626 return (false);
627
628 l2p = pmap_l1_to_l2(l1p, va);
629 *l2 = l2p;
630
631 if ((pmap_load(l2p) & ATTR_DESCR_MASK) == L2_BLOCK) {
632 *l3 = NULL;
633 return (true);
634 }
635
636 if ((pmap_load(l2p) & ATTR_DESCR_MASK) != L2_TABLE)
637 return (false);
638
639 *l3 = pmap_l2_to_l3(l2p, va);
640
641 return (true);
642}
643
644static __inline int
645pmap_l3_valid(pt_entry_t l3)

Callers 1

minidumpsysFunction · 0.85

Calls 4

pmap_l0Function · 0.85
pmap_l0_to_l1Function · 0.85
pmap_l1_to_l2Function · 0.85
pmap_l2_to_l3Function · 0.85

Tested by

no test coverage detected