* Checks if the PTE is dirty. */
| 706 | * Checks if the PTE is dirty. |
| 707 | */ |
| 708 | static inline int |
| 709 | pmap_pte_dirty(pmap_t pmap, pt_entry_t pte) |
| 710 | { |
| 711 | |
| 712 | KASSERT((pte & ATTR_SW_MANAGED) != 0, ("pte %#lx is unmanaged", pte)); |
| 713 | |
| 714 | if (pmap->pm_stage == PM_STAGE1) { |
| 715 | KASSERT((pte & (ATTR_S1_AP_RW_BIT | ATTR_SW_DBM)) != 0, |
| 716 | ("pte %#lx is writeable and missing ATTR_SW_DBM", pte)); |
| 717 | |
| 718 | return ((pte & (ATTR_S1_AP_RW_BIT | ATTR_SW_DBM)) == |
| 719 | (ATTR_S1_AP(ATTR_S1_AP_RW) | ATTR_SW_DBM)); |
| 720 | } |
| 721 | |
| 722 | return ((pte & ATTR_S2_S2AP(ATTR_S2_S2AP_WRITE)) == |
| 723 | ATTR_S2_S2AP(ATTR_S2_S2AP_WRITE)); |
| 724 | } |
| 725 | |
| 726 | static __inline void |
| 727 | pmap_resident_count_inc(pmap_t pmap, int count) |
no outgoing calls
no test coverage detected