Lines Matching refs:pte

669 static void pmap_pte_attr(pt_entry_t *pte, int cache_bits, int mask);
674 static void pmap_pti_wire_pte(void *pte);
774 pt_entry_t *pte;
776 pte = (pt_entry_t *)PHYS_TO_DMAP(*pde & PG_FRAME);
777 return (&pte[pmap_pte_index(va)]);
1026 pt_entry_t *pte;
1083 v = (c)va; va += ((n)*PAGE_SIZE); p = pte; pte += (n);
1086 pte = vtopte(va);
2258 pt_entry_t *pte, PG_V;
2275 pte = pmap_pde_to_pte(pde, va);
2276 pa = (*pte & PG_FRAME) |
2297 pt_entry_t pte, PG_RW, PG_V;
2317 pte = *pmap_pde_to_pte(pdep, va);
2318 if ((pte & PG_V) &&
2319 ((pte & PG_RW) || (prot & VM_PROT_WRITE) == 0)) {
2320 if (vm_page_pa_tryrelock(pmap, pte & PG_FRAME,
2373 pt_entry_t *pte;
2375 pte = vtopte(va);
2376 pte_store(pte, pa | X86_PG_RW | X86_PG_V | pg_g);
2382 pt_entry_t *pte;
2385 pte = vtopte(va);
2387 pte_store(pte, pa | X86_PG_RW | X86_PG_V | pg_g | cache_bits);
2397 pt_entry_t *pte;
2399 pte = vtopte(va);
2400 pte_clear(pte);
2434 pt_entry_t *endpte, oldpte, pa, *pte;
2439 pte = vtopte(sva);
2440 endpte = pte + count;
2441 while (pte < endpte) {
2445 if ((*pte & (PG_FRAME | X86_PG_PTE_CACHE)) != pa) {
2446 oldpte |= *pte;
2447 pte_store(pte, pa | pg_g | X86_PG_RW | X86_PG_V);
2449 pte++;
2999 * Here if the pte page isn't mapped, or if it has been
3234 pt_entry_t *pte, tpte;
3334 pte = pmap_pde_to_pte(pde, va);
3335 if ((*pte & PG_W) != 0)
3337 tpte = pte_load_clear(pte);
3851 pt_entry_t *pte;
3853 for (pte = firstpte; pte < firstpte + NPTEPG; pte++) {
3854 *pte = newpte;
4093 ("pmap_remove_pde: pte page wire count error"));
4148 pt_entry_t *pte, PG_V;
4154 pte = pmap_pde_to_pte(pde, va);
4155 if ((*pte & PG_V) == 0)
4158 pmap_remove_pte(pmap, pte, va, *pde, free, &lock);
4171 pt_entry_t PG_G, *pte;
4179 for (pte = pmap_pde_to_pte(pde, sva); sva != eva; pte++,
4181 if (*pte == 0) {
4188 if ((*pte & PG_G) == 0)
4192 if (pmap_remove_pte(pmap, pte, sva, *pde, free, lockp)) {
4352 pt_entry_t *pte, tpte, PG_A, PG_M, PG_RW;
4405 pte = pmap_pde_to_pte(pde, pv->pv_va);
4406 tpte = pte_load_clear(pte);
4490 pt_entry_t *pte, PG_G, PG_M, PG_RW, PG_V;
4588 for (pte = pmap_pde_to_pte(pde, sva); sva != va_next; pte++,
4594 obits = pbits = *pte;
4610 if (!atomic_cmpset_long(pte, obits, pbits))
4646 pt_entry_t *firstpte, oldpte, pa, *pte;
4692 for (pte = firstpte + NPTEPG - 1; pte > firstpte; pte--) {
4694 oldpte = *pte;
4706 if (!atomic_cmpset_long(pte, oldpte, oldpte & ~PG_RW))
4772 * that the related pte can not be reclaimed.
4788 pt_entry_t *pte, PG_G, PG_A, PG_M, PG_RW, PG_V;
4862 pte = pmap_pde_to_pte(pde, va);
4869 * Here if the pte page isn't mapped, or if it has been
4883 origpte = *pte;
4937 origpte = pte_load_clear(pte);
4994 origpte = pte_load_store(pte, newpte);
5016 pte_store(pte, newpte);
5271 pt_entry_t newpte, *pte, PG_V;
5320 pte = (pt_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(mpte));
5321 pte = &pte[pmap_pte_index(va)];
5324 pte = vtopte(va);
5326 if (*pte) {
5369 pte_store(pte, newpte);
5504 pt_entry_t *pte, PG_V;
5548 for (pte = pmap_pde_to_pte(pde, sva); sva != va_next; pte++,
5550 if ((*pte & PG_V) == 0)
5552 if ((*pte & PG_W) == 0)
5553 panic("pmap_unwire: pte %#jx is missing PG_W",
5554 (uintmax_t)*pte);
5561 atomic_clear_long(pte, PG_W);
5890 pt_entry_t *pte;
5912 pte = pmap_pte(pmap, pv->pv_va);
5913 if ((*pte & PG_W) != 0)
5933 pte = pmap_pde(pmap, pv->pv_va);
5934 if ((*pte & PG_W) != 0)
5993 pt_entry_t *pte, tpte;
6045 pte = pmap_pdpe(pmap, pv->pv_va);
6046 ptepde = *pte;
6047 pte = pmap_pdpe_to_pde(pte, pv->pv_va);
6048 tpte = *pte;
6052 pte = (pt_entry_t *)PHYS_TO_DMAP(tpte &
6054 pte = &pte[pmap_pte_index(pv->pv_va)];
6055 tpte = *pte;
6071 panic("bad pte va %lx pte %lx",
6099 pte_clear(pte);
6131 ("pmap_remove_pages: pte page wire count error"));
6172 pt_entry_t *pte, mask;
6194 pte = pmap_pte(pmap, pv->pv_va);
6206 rv = (*pte & mask) == mask;
6227 pte = pmap_pde(pmap, pv->pv_va);
6239 rv = (*pte & mask) == mask;
6284 pt_entry_t *pte, PG_V;
6292 pte = pmap_pde_to_pte(pde, addr);
6293 rv = (*pte & PG_V) == 0;
6325 pt_entry_t oldpte, *pte, PG_M, PG_RW;
6389 pte = pmap_pde_to_pte(pde, pv->pv_va);
6391 oldpte = *pte;
6393 if (!atomic_cmpset_long(pte, oldpte, oldpte &
6408 safe_to_clear_referenced(pmap_t pmap, pt_entry_t pte)
6421 if ((pte & EPT_PG_WRITE) != 0)
6427 if ((pte & EPT_PG_EXECUTE) == 0 ||
6462 pt_entry_t *pte, PG_A, PG_M, PG_RW;
6549 pte = pmap_pde_to_pte(pde, va);
6550 pmap_remove_pte(pmap, pte, va, *pde,
6609 pte = pmap_pde_to_pte(pde, pv->pv_va);
6610 if ((*pte & (PG_M | PG_RW)) == (PG_M | PG_RW))
6612 if ((*pte & PG_A) != 0) {
6613 if (safe_to_clear_referenced(pmap, *pte)) {
6614 atomic_clear_long(pte, PG_A);
6617 } else if ((*pte & PG_W) == 0) {
6624 pmap_remove_pte(pmap, pte, pv->pv_va,
6664 pt_entry_t *pte, PG_A, PG_G, PG_M, PG_RW, PG_V;
6733 pte = pmap_pde_to_pte(pde, sva);
6734 KASSERT((*pte & PG_V) != 0,
6736 pmap_remove_pte(pmap, pte, sva, *pde, NULL,
6746 for (pte = pmap_pde_to_pte(pde, sva); sva != va_next; pte++,
6748 if ((*pte & (PG_MANAGED | PG_V)) != (PG_MANAGED | PG_V))
6750 else if ((*pte & (PG_M | PG_RW)) == (PG_M | PG_RW)) {
6757 m = PHYS_TO_VM_PAGE(*pte & PG_FRAME);
6760 atomic_clear_long(pte, PG_M | PG_A);
6761 } else if ((*pte & PG_A) != 0)
6762 atomic_clear_long(pte, PG_A);
6766 if ((*pte & PG_G) != 0) {
6797 pt_entry_t oldpte, *pte, PG_M, PG_RW, PG_V;
6848 pte = pmap_pde_to_pte(pde, va);
6849 oldpte = *pte;
6851 while (!atomic_cmpset_long(pte,
6854 oldpte = *pte;
6881 pte = pmap_pde_to_pte(pde, pv->pv_va);
6882 if ((*pte & (PG_M | PG_RW)) == (PG_M | PG_RW)) {
6883 atomic_clear_long(pte, PG_M);
6897 pmap_pte_attr(pt_entry_t *pte, int cache_bits, int mask)
6906 opte = *(u_int *)pte;
6909 } while (npte != opte && !atomic_cmpset_int((u_int *)pte, opte, npte));
7180 pt_entry_t *pte;
7259 pte = pmap_pde_to_pte(pde, tmpva);
7260 if (*pte == 0)
7331 pte = pmap_pde_to_pte(pde, tmpva);
7332 if ((*pte & X86_PG_PTE_CACHE) != cache_bits_pte) {
7333 pmap_pte_attr(pte, cache_bits_pte,
7338 (*pte & PG_FRAME) < dmaplimit) {
7341 pa_start = *pte & PG_FRAME;
7343 } else if (pa_end == (*pte & PG_FRAME))
7353 pa_start = *pte & PG_FRAME;
7434 pt_entry_t pte, PG_A, PG_M, PG_RW, PG_V;
7448 pte = *pdep;
7454 pte = *pmap_pde_to_pte(pdep, addr);
7455 pa = pte & PG_FRAME;
7459 pte = 0;
7463 if ((pte & PG_V) != 0) {
7465 if ((pte & (PG_M | PG_RW)) == (PG_M | PG_RW))
7467 if ((pte & PG_A) != 0)
7472 (pte & (PG_MANAGED | PG_V)) == (PG_MANAGED | PG_V)) {
7719 pt_entry_t *pte, PG_A, PG_M, PG_RW, PG_V;
7751 pte = pmap_pde_to_pte(pde, va);
7752 if ((*pte & PG_V) == 0)
7756 if ((*pte & PG_RW) == 0)
7767 *pte |= PG_M | PG_A;
7769 *pte |= PG_A;
7779 m = PHYS_TO_VM_PAGE(*pte & PG_FRAME);
7812 pt_entry_t *pte, PG_V;
7834 pte = pmap_pde_to_pte(pde, va);
7835 ptr[idx++] = *pte;
7865 pt_entry_t *pte;
7911 pte = vtopte(vaddr[i]);
7914 pte_store(pte, paddr | X86_PG_RW | X86_PG_V |
8074 pmap_pti_wire_pte(void *pte)
8079 m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((uintptr_t)pte));
8096 pmap_pti_unwire_pte(void *pte, vm_offset_t va)
8102 m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((uintptr_t)pte));
8149 pt_entry_t *pte;
8177 pte = (pt_entry_t *)PHYS_TO_DMAP(mphys);
8178 pte += pmap_pte_index(va);
8180 return (pte);
8188 pt_entry_t *pte, ptev;
8198 pte = pmap_pti_pte(sva, &unwire_pde);
8203 if (*pte == 0) {
8204 pte_store(pte, ptev);
8205 pmap_pti_wire_pte(pte);
8209 sva, *pte, ptev));
8210 KASSERT(*pte == ptev,
8211 ("pti non-identical pte after fin %#lx %#lx %#lx",
8212 sva, *pte, ptev));
8235 pt_entry_t *pte;
8246 pte = pmap_pti_pte(va, NULL);
8247 KASSERT((*pte & X86_PG_V) != 0,
8248 ("invalid pte va %#lx pte %#lx pt %#lx", va,
8249 (u_long)pte, *pte));
8250 pte_clear(pte);
8251 pmap_pti_unwire_pte(pte, va);
8261 DB_SHOW_COMMAND(pte, pmap_print_pte)
8267 pt_entry_t *pte, PG_V;
8274 db_printf("show pte addr\n");
8296 pte = pmap_pde_to_pte(pde, va);
8297 db_printf(" pte %#016lx\n", *pte);