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

Function pmap_pde

freebsd/arm64/arm64/pmap.c:517–545  ·  view source on GitHub ↗

* Returns the lowest valid pde for a given virtual address. * The next level may or may not point to a valid page or block. */

Source from the content-addressed store, hash-verified

515 * The next level may or may not point to a valid page or block.
516 */
517static __inline pd_entry_t *
518pmap_pde(pmap_t pmap, vm_offset_t va, int *level)
519{
520 pd_entry_t *l0, *l1, *l2, desc;
521
522 l0 = pmap_l0(pmap, va);
523 desc = pmap_load(l0) & ATTR_DESCR_MASK;
524 if (desc != L0_TABLE) {
525 *level = -1;
526 return (NULL);
527 }
528
529 l1 = pmap_l0_to_l1(l0, va);
530 desc = pmap_load(l1) & ATTR_DESCR_MASK;
531 if (desc != L1_TABLE) {
532 *level = 0;
533 return (l0);
534 }
535
536 l2 = pmap_l1_to_l2(l1, va);
537 desc = pmap_load(l2) & ATTR_DESCR_MASK;
538 if (desc != L2_TABLE) {
539 *level = 1;
540 return (l1);
541 }
542
543 *level = 2;
544 return (l2);
545}
546
547/*
548 * Returns the lowest valid pte block or table entry for a given virtual

Callers 13

pmap_kenterFunction · 0.70
pmap_qenterFunction · 0.70
pmap_alloc_l3Function · 0.70
reclaim_pv_chunkFunction · 0.70
pmap_remove_allFunction · 0.70
pmap_senterFunction · 0.70
pmap_enterFunction · 0.70
pmap_enter_quick_lockedFunction · 0.70
pmap_remove_pagesFunction · 0.70
pmap_ts_referencedFunction · 0.70
pmap_mapbiosFunction · 0.70
pmap_unmapbiosFunction · 0.70

Calls 3

pmap_l0Function · 0.85
pmap_l0_to_l1Function · 0.85
pmap_l1_to_l2Function · 0.85

Tested by

no test coverage detected