| 1608 | } |
| 1609 | |
| 1610 | static pt_entry_t * |
| 1611 | pmap_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 | |
| 1644 | static pt_entry_t |
| 1645 | pmap_pte_ufast(pmap_t pmap, vm_offset_t va, pd_entry_t pde) |
no test coverage detected