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

Function pmap_pte_quick3

freebsd/i386/i386/pmap.c:1610–1642  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1608}
1609
1610static pt_entry_t *
1611pmap_pte_quick3(pmap_t pmap, vm_offset_t va)
1612{
1613 pd_entry_t newpf;
1614 pd_entry_t *pde;
1615
1616 pde = pmap_pde(pmap, va);
1617 if (*pde & PG_PS)
1618 return (pde);
1619 if (*pde != 0) {
1620 rw_assert(&pvh_global_lock, RA_WLOCKED);
1621 KASSERT(curthread->td_pinned > 0, ("curthread not pinned"));
1622 newpf = *pde & PG_FRAME;
1623 if ((*PMAP3 & PG_FRAME) != newpf) {
1624 *PMAP3 = newpf | PG_RW | PG_V | PG_A | PG_M;
1625#ifdef SMP
1626 PMAP3cpu = PCPU_GET(cpuid);
1627#endif
1628 invlcaddr(PADDR3);
1629 PMAP1changed++;
1630 } else
1631#ifdef SMP
1632 if (PMAP3cpu != PCPU_GET(cpuid)) {
1633 PMAP3cpu = PCPU_GET(cpuid);
1634 invlcaddr(PADDR3);
1635 PMAP1changedcpu++;
1636 } else
1637#endif
1638 PMAP1unchanged++;
1639 return (PADDR3 + (i386_btop(va) & (NPTEPG - 1)));
1640 }
1641 return (0);
1642}
1643
1644static pt_entry_t
1645pmap_pte_ufast(pmap_t pmap, vm_offset_t va, pd_entry_t pde)

Callers 1

__CONCAT(PMTYPE, copy)Function · 0.85

Calls 2

invlcaddrFunction · 0.85
pmap_pdeFunction · 0.50

Tested by

no test coverage detected