Lines Matching defs:pmd
71 pr_err("%s:%d: bad pmd %016lx.\n", __FILE__, __LINE__, pmd_val(e))
547 static inline pmd_t clear_pmd_bit(pmd_t pmd, pgprot_t prot)
549 return __pmd(pmd_val(pmd) & ~pgprot_val(prot));
552 static inline pmd_t set_pmd_bit(pmd_t pmd, pgprot_t prot)
554 return __pmd(pmd_val(pmd) | pgprot_val(prot));
625 * pgd/p4d/pud/pmd/pte query functions
716 static inline int pmd_large(pmd_t pmd)
718 return (pmd_val(pmd) & _SEGMENT_ENTRY_LARGE) != 0;
721 static inline int pmd_bad(pmd_t pmd)
723 if ((pmd_val(pmd) & _SEGMENT_ENTRY_TYPE_MASK) > 0 || pmd_large(pmd))
725 return (pmd_val(pmd) & ~_SEGMENT_ENTRY_BITS) != 0;
750 static inline int pmd_present(pmd_t pmd)
752 return pmd_val(pmd) != _SEGMENT_ENTRY_EMPTY;
755 static inline int pmd_none(pmd_t pmd)
757 return pmd_val(pmd) == _SEGMENT_ENTRY_EMPTY;
761 static inline int pmd_write(pmd_t pmd)
763 return (pmd_val(pmd) & _SEGMENT_ENTRY_WRITE) != 0;
772 static inline int pmd_dirty(pmd_t pmd)
774 return (pmd_val(pmd) & _SEGMENT_ENTRY_DIRTY) != 0;
778 static inline int pmd_young(pmd_t pmd)
780 return (pmd_val(pmd) & _SEGMENT_ENTRY_YOUNG) != 0;
819 static inline int pmd_protnone(pmd_t pmd)
821 /* pmd_large(pmd) implies pmd_present(pmd) */
822 return pmd_large(pmd) && !(pmd_val(pmd) & _SEGMENT_ENTRY_READ);
859 static inline int pmd_soft_dirty(pmd_t pmd)
861 return pmd_val(pmd) & _SEGMENT_ENTRY_SOFT_DIRTY;
864 static inline pmd_t pmd_mksoft_dirty(pmd_t pmd)
866 return set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_SOFT_DIRTY));
869 static inline pmd_t pmd_clear_soft_dirty(pmd_t pmd)
871 return clear_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_SOFT_DIRTY));
919 * pgd/pmd/pte modification functions
937 static inline void set_pmd(pmd_t *pmdp, pmd_t pmd)
939 WRITE_ONCE(*pmdp, pmd);
1379 static inline unsigned long pmd_deref(pmd_t pmd)
1384 if (pmd_large(pmd))
1386 return (unsigned long)__va(pmd_val(pmd) & origin_mask);
1389 static inline unsigned long pmd_pfn(pmd_t pmd)
1391 return __pa(pmd_deref(pmd)) >> PAGE_SHIFT;
1475 static inline unsigned long pmd_page_vaddr(pmd_t pmd)
1477 return (unsigned long) pmd_deref(pmd);
1490 #define pmd_page(pmd) pfn_to_page(pmd_pfn(pmd))
1495 static inline pmd_t pmd_wrprotect(pmd_t pmd)
1497 pmd = clear_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_WRITE));
1498 return set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_PROTECT));
1501 static inline pmd_t pmd_mkwrite_novma(pmd_t pmd)
1503 pmd = set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_WRITE));
1504 if (pmd_val(pmd) & _SEGMENT_ENTRY_DIRTY)
1505 pmd = clear_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_PROTECT));
1506 return pmd;
1509 static inline pmd_t pmd_mkclean(pmd_t pmd)
1511 pmd = clear_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_DIRTY));
1512 return set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_PROTECT));
1515 static inline pmd_t pmd_mkdirty(pmd_t pmd)
1517 pmd = set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_DIRTY | _SEGMENT_ENTRY_SOFT_DIRTY));
1518 if (pmd_val(pmd) & _SEGMENT_ENTRY_WRITE)
1519 pmd = clear_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_PROTECT));
1520 return pmd;
1569 static inline pmd_t pmd_mkyoung(pmd_t pmd)
1571 pmd = set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_YOUNG));
1572 if (pmd_val(pmd) & _SEGMENT_ENTRY_READ)
1573 pmd = clear_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_INVALID));
1574 return pmd;
1577 static inline pmd_t pmd_mkold(pmd_t pmd)
1579 pmd = clear_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_YOUNG));
1580 return set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_INVALID));
1583 static inline pmd_t pmd_modify(pmd_t pmd, pgprot_t newprot)
1592 pmd = __pmd(pmd_val(pmd) & mask);
1593 pmd = set_pmd_bit(pmd, __pgprot(massage_pgprot_pmd(newprot)));
1594 if (!(pmd_val(pmd) & _SEGMENT_ENTRY_DIRTY))
1595 pmd = set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_PROTECT));
1596 if (!(pmd_val(pmd) & _SEGMENT_ENTRY_YOUNG))
1597 pmd = set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_INVALID));
1598 return pmd;
1707 pmd_t pmd = *pmdp;
1709 pmd = pmdp_xchg_direct(vma->vm_mm, addr, pmdp, pmd_mkold(pmd));
1710 return pmd_young(pmd);
1729 static inline pmd_t pmd_mkhuge(pmd_t pmd)
1731 pmd = set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_LARGE));
1732 pmd = set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_YOUNG));
1733 return set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_PROTECT));
1749 pmd_t pmd = *pmdp;
1751 return pmd;
1767 pmd_t pmd = __pmd(pmd_val(*pmdp) | _SEGMENT_ENTRY_INVALID);
1769 return pmdp_xchg_direct(vma->vm_mm, addr, pmdp, pmd);
1776 pmd_t pmd = *pmdp;
1778 if (pmd_write(pmd))
1779 pmd = pmdp_xchg_lazy(mm, addr, pmdp, pmd_wrprotect(pmd));
1793 static inline int pmd_trans_huge(pmd_t pmd)
1795 return pmd_val(pmd) & _SEGMENT_ENTRY_LARGE;
1869 #define pmd_pgtable(pmd) \
1870 ((pgtable_t)__va(pmd_val(pmd) & -sizeof(pte_t)*PTRS_PER_PTE))