Lines Matching refs:pte1
333 static int pmap_enter_pte1(pmap_t pmap, vm_offset_t va, pt1_entry_t pte1,
1092 pt1_entry_t pte1;
1095 pte1 = pte1_load(kern_pte1(va));
1096 if (pte1_is_section(pte1)) {
1097 pa = pte1_pa(pte1) | (va & PTE1_OFFSET);
1098 } else if (pte1_is_link(pte1)) {
1101 * pte1 at this point. However, it's not a problem as PT2
1113 panic("%s: va %#x pte1 %#x", __func__, va, pte1);
1129 pt1_entry_t pte1;
1132 pte1 = pte1_load(kern_pte1(va));
1133 if (pte1_is_section(pte1)) {
1134 pa = pte1_pa(pte1) | (va & PTE1_OFFSET);
1135 pte2 = pa | ATTR_TO_L2(pte1) | PTE2_V;
1136 } else if (pte1_is_link(pte1)) {
1573 static SYSCTL_NODE(_vm_pmap, OID_AUTO, pte1, CTLFLAG_RD | CTLFLAG_MPSAFE, 0,
1866 pt1_entry_t pte1;
1869 pte1 = pte1_load(pmap_pte1(pmap, va));
1870 if (pte1_is_section(pte1))
1872 if (pte1_is_link(pte1)) {
1877 pt2pg_pa = trunc_page(pte1_link_pa(pte1));
1914 pt1_entry_t pte1;
1917 pte1 = pte1_load(pmap_pte1(pmap, va));
1918 if (pte1_is_section(pte1))
1920 if (pte1_is_link(pte1)) {
1928 pt2pg_pa = trunc_page(pte1_link_pa(pte1));
1960 pt1_entry_t pte1;
1964 pte1 = pte1_load(pmap_pte1(pmap, va));
1965 if (pte1_is_section(pte1))
1966 pa = pte1_pa(pte1) | (va & PTE1_OFFSET);
1967 else if (pte1_is_link(pte1)) {
1988 pt1_entry_t pte1;
1994 pte1 = pte1_load(pmap_pte1(pmap, va));
1995 if (pte1_is_section(pte1)) {
1996 if (!(pte1 & PTE1_RO) || !(prot & VM_PROT_WRITE)) {
1997 pa = pte1_pa(pte1) | (va & PTE1_OFFSET);
2002 } else if (pte1_is_link(pte1)) {
2026 pt1_entry_t pte1;
2049 pte1 = pte1_load(kern_pte1(kernel_vm_end));
2050 if (pte1_is_valid(pte1)) {
2246 * pte1 index of virtual address mapped by this page.
2526 pt1_entry_t *pte1p, pte1;
2532 pte1 = pte1_load(pte1p);
2538 if (pte1_is_section(pte1)) {
2541 * Reload pte1 after demotion.
2546 pte1 = pte1_load(pte1p);
2553 if (pte1_is_link(pte1)) {
2554 m = PHYS_TO_VM_PAGE(pte1_link_pa(pte1));
2625 ("%s: pmap %p va %#x bad pte1 %x at %u", __func__,
2726 pt1_entry_t pte1;
2731 pte1 = pte1_load(pmap_pte1(pmap, va));
2732 mpte = PHYS_TO_VM_PAGE(pte1_link_pa(pte1));
2806 pte1_is_managed(pt1_entry_t pte1)
2809 return (is_managed(pte1_pa(pte1)));
3238 pmap_pv_insert_pte1(pmap_t pmap, vm_offset_t va, pt1_entry_t pte1, u_int flags)
3250 pvh = pa_to_pvh(pte1_pa(pte1));
3267 * Update kernel pte1 on all pmaps.
3271 * nobody can invoke explicit hardware table walk during the update of pte1.
3294 * (1) Change pte1 on current pmap.
3296 * (3) Change pte1 on all pmaps.
3348 * Change pte1 on current pmap.
3349 * Note that kernel pte1 must be changed on all pmaps.
3359 * It's a problem when either promotion or demotion is being done. The pte1
3444 PDEBUG(6, printf("%s(%p): try for va %#x pte1 %#x at %p\n", __func__,
3528 * Get pte1 from pte2 format.
3547 PDEBUG(6, printf("%s(%p): success for va %#x pte1 %#x(%#x) at %p\n",
3580 * QQQ: Is this function called only on promoted pte1?
3619 PDEBUG(6, printf("%s(%p): va %#x pte1 %#x at %p\n", __func__, pmap, sva,
3697 PDEBUG(6, printf("%s(%p): try for va %#x pte1 %#x at %p\n", __func__,
3795 * Get pte2 from pte1 format.
3842 PDEBUG(6, printf("%s(%p): success for va %#x pte1 %#x(%#x) at %p\n",
4165 pt1_entry_t *pte1p, pte1;
4186 pte1 = pte1_load(pmap_pte1(pmap, sva));
4187 if (pte1_is_link(pte1)) {
4204 pte1 = pte1_load(pte1p);
4210 if (pte1 == 0)
4213 if (pte1_is_section(pte1)) {
4227 /* Update pte1 after demotion. */
4228 pte1 = pte1_load(pte1p);
4233 KASSERT(pte1_is_link(pte1), ("%s: pmap %p va %#x pte1 %#x at %p"
4234 " is not link", __func__, pmap, sva, pte1, pte1p));
4339 pmap_remove_pte1_quick(pmap_t pmap, pt1_entry_t pte1, pv_entry_t pv,
4346 pa = pte1_pa(pte1);
4353 ("%s: bad pte1 %#x", __func__, pte1));
4355 if (pte1_is_dirty(pte1)) {
4417 pt1_entry_t *pte1p, pte1;
4468 pte1 = pte1_load(pte1p);
4469 if (pte1_is_section(pte1)) {
4470 if (pte1_is_wired(pte1)) {
4475 pmap_remove_pte1_quick(pmap, pte1, pv,
4478 else if (pte1_is_link(pte1)) {
4497 printf("%s: pmap %p va %#x pte1 %#x\n",
4498 __func__, pmap, pv->pv_va, pte1);
4499 panic("bad pte1");
4550 pt1_entry_t pte1, *pte1p;
4558 pte1 = pte1_load(pte1p);
4570 KASSERT(!pte1_is_section(pte1),
4571 ("%s: pte1 %#x is section", __func__, pte1));
4572 if (!pte1_is_link(pte1)) {
4583 if (pte1_is_section(pte1)) {
4585 } else if (pte1_is_link(pte1)) {
4586 mpt2pg = PHYS_TO_VM_PAGE(pte1_link_pa(pte1));
4681 pt1_entry_t pte1;
4686 pte1 = PTE1(pa, PTE1_NM | PTE1_RO, ATTR_TO_L1(vm_page_pte2_attr(m)));
4688 pte1 |= PTE1_NX;
4690 pte1 |= PTE1_U;
4692 pte1 |= PTE1_NG;
4693 return (pmap_enter_pte1(pmap, va, pte1, PMAP_ENTER_NOSLEEP |
4706 pmap_enter_pte1(pmap_t pmap, vm_offset_t va, pt1_entry_t pte1, u_int flags,
4716 KASSERT((pte1 & (PTE1_NM | PTE1_RO)) == 0 ||
4717 (pte1 & (PTE1_NM | PTE1_RO)) == (PTE1_NM | PTE1_RO),
4718 ("%s: pte1 has inconsistent NM and RO attributes", __func__));
4755 if (!pmap_pv_insert_pte1(pmap, va, pte1, flags)) {
4760 if ((pte1 & PTE1_RO) == 0) {
4769 if (pte1_is_wired(pte1))
4777 if ((pte1 & PTE1_NX) == 0 && m->md.pat_mode == VM_MEMATTR_WB_WA &&
4785 pte1_store(pte1p, pte1);
4960 pt1_entry_t *pte1p, pte1;
4992 pte1 = pte1_load(pte1p);
4998 if (pte1 == 0)
5001 if (pte1_is_section(pte1)) {
5027 /* Update pte1 after demotion */
5028 pte1 = pte1_load(pte1p);
5034 KASSERT(pte1_is_link(pte1), ("%s: pmap %p va %#x pte1 %#x at %p"
5035 " is not link", __func__, pmap, sva, pte1, pte1p));
5093 pt1_entry_t pte1;
5102 pte1 = pte1_load(pmap_pte1(pmap, pv->pv_va));
5103 if (pte1_is_section(pte1)) {
5104 if (pte1_is_wired(pte1))
5107 KASSERT(pte1_is_link(pte1),
5108 ("%s: pte1 %#x is not link", __func__, pte1));
5152 pt1_entry_t pte1;
5163 pte1 = pte1_load(pmap_pte1(pmap, pv->pv_va));
5164 if (pte1_is_section(pte1)) {
5165 rv = pte1_is_dirty(pte1);
5167 KASSERT(pte1_is_link(pte1),
5168 ("%s: pte1 %#x is not link", __func__, pte1));
5216 pt1_entry_t pte1;
5222 pte1 = pte1_load(pmap_pte1(pmap, addr));
5223 if (pte1_is_link(pte1)) {
5240 pt1_entry_t pte1;
5251 pte1 = pte1_load(pmap_pte1(pmap, pv->pv_va));
5252 if (pte1_is_section(pte1)) {
5253 rv = (pte1 & (PTE1_A | PTE1_V)) == (PTE1_A | PTE1_V);
5420 pt1_entry_t *pte1p, pte1;
5439 pte1 = pte1_load(pte1p);
5445 if (pte1 == 0)
5448 if (pte1_is_section(pte1)) {
5449 if (!pte1_is_wired(pte1))
5450 panic("%s: pte1 %#x not wired", __func__, pte1);
5475 /* Update pte1 after demotion */
5476 pte1 = pte1_load(pte1p);
5482 KASSERT(pte1_is_link(pte1), ("%s: pmap %p va %#x pte1 %#x at %p"
5483 " is not link", __func__, pmap, sva, pte1, pte1p));
6226 pt1_entry_t *pte1p, pte1;
6234 pte1 = pte1_load(pte1p);
6235 if (pte1_is_section(pte1)) {
6236 pa = trunc_page(pte1_pa(pte1) | (addr & PTE1_OFFSET));
6237 managed = pte1_is_managed(pte1);
6239 if (pte1_is_dirty(pte1))
6241 if (pte1 & PTE1_A)
6243 } else if (pte1_is_link(pte1)) {
6407 pt1_entry_t *pte1p, pte1;
6473 pte1 = pte1_load(pmap_pte1(pmap, far));
6474 if (pte1_is_link(pte1)) {
6491 * pte1 is updated for userland mapping during section promotion or
6508 pte1 = pte1_load(pmap_pte1(pmap, far));
6509 if (pte1_is_link(pte1)) {
6531 pte1 = pte1_load(pte1p);
6532 if (pte1_is_section(pte1)) {
6533 pte1_store(pte1p, pte1 | PTE1_A);
6557 pte1 = pte1_load(pmap_pte1(pmap, far));
6558 if (pte1_is_link(pte1)) {
6582 pte1 = pte1_load(pte1p);
6583 if (pte1_is_section(pte1)) {
6584 if (!(pte1 & PTE1_RO) && (pte1 & PTE1_NM)) {
6585 pte1_store(pte1p, pte1 & ~PTE1_NM);
6656 pt1_entry_t pte1;
6663 pte1 = pte1_load(&pmap->pm_pt1[i]);
6665 if (pte1_is_section(pte1)) {
6669 } else if (pte1_is_link(pte1)) {
6713 pt1_entry_t pte1;
6716 pte1 = pte1_load(pmap_pte1(pmap, va));
6717 if (!pte1_is_link(pte1))
6724 pt2pg_pa = trunc_page(pte1_link_pa(pte1));
6822 pt1_entry_t pte1;
6849 pte1 = pte1_load(&pmap->pm_pt1[i]);
6850 if (pte1 == 0)
6856 if (pte1_is_section(pte1)) {
6857 printf("0x%08X: Section 0x%08X, s:%d g:%d\n", va, pte1,
6858 !!(pte1 & PTE1_S), !(pte1 & PTE1_NG));
6860 } else if (pte1_is_link(pte1)) {
6864 m = PHYS_TO_VM_PAGE(pte1_link_pa(pte1));
6866 va, pte1, pte2, m);
6879 else if (pte2_pa(pte1) != pte2_pa(pte2))
6886 printf("0x%08X: Invalid entry 0x%08X\n", va, pte1);
6920 pt1_entry_t pte1;
6937 pte1 = pte1_load(&pmap->pm_pt1[i]);
6938 if (pte1 == 0)
6941 if (pte1_is_section(pte1)) {
6942 printf("0x%08X: Section 0x%08X, s:%d\n", va, pte1,
6943 !!(pte1 & PTE1_S));
6945 } else if (pte1_is_link(pte1)) {
6948 pte1, pte2);
6952 printf("0x%08X: Invalid entry 0x%08X\n", va, pte1);