Lines Matching full:pmd

72 	pr_err("%s:%d: bad pmd %016lx.\n", __FILE__, __LINE__, pmd_val(e))
536 static inline pmd_t clear_pmd_bit(pmd_t pmd, pgprot_t prot) in clear_pmd_bit() argument
538 return __pmd(pmd_val(pmd) & ~pgprot_val(prot)); in clear_pmd_bit()
541 static inline pmd_t set_pmd_bit(pmd_t pmd, pgprot_t prot) in set_pmd_bit() argument
543 return __pmd(pmd_val(pmd) | pgprot_val(prot)); in set_pmd_bit()
614 * pgd/p4d/pud/pmd/pte query functions
705 static inline int pmd_large(pmd_t pmd) in pmd_large() argument
707 return (pmd_val(pmd) & _SEGMENT_ENTRY_LARGE) != 0; in pmd_large()
710 static inline int pmd_bad(pmd_t pmd) in pmd_bad() argument
712 if ((pmd_val(pmd) & _SEGMENT_ENTRY_TYPE_MASK) > 0 || pmd_large(pmd)) in pmd_bad()
714 return (pmd_val(pmd) & ~_SEGMENT_ENTRY_BITS) != 0; in pmd_bad()
739 static inline int pmd_present(pmd_t pmd) in pmd_present() argument
741 return pmd_val(pmd) != _SEGMENT_ENTRY_EMPTY; in pmd_present()
744 static inline int pmd_none(pmd_t pmd) in pmd_none() argument
746 return pmd_val(pmd) == _SEGMENT_ENTRY_EMPTY; in pmd_none()
750 static inline int pmd_write(pmd_t pmd) in pmd_write() argument
752 return (pmd_val(pmd) & _SEGMENT_ENTRY_WRITE) != 0; in pmd_write()
761 static inline int pmd_dirty(pmd_t pmd) in pmd_dirty() argument
763 return (pmd_val(pmd) & _SEGMENT_ENTRY_DIRTY) != 0; in pmd_dirty()
767 static inline int pmd_young(pmd_t pmd) in pmd_young() argument
769 return (pmd_val(pmd) & _SEGMENT_ENTRY_YOUNG) != 0; in pmd_young()
808 static inline int pmd_protnone(pmd_t pmd) in pmd_protnone() argument
810 /* pmd_large(pmd) implies pmd_present(pmd) */ in pmd_protnone()
811 return pmd_large(pmd) && !(pmd_val(pmd) & _SEGMENT_ENTRY_READ); in pmd_protnone()
849 static inline int pmd_soft_dirty(pmd_t pmd) in pmd_soft_dirty() argument
851 return pmd_val(pmd) & _SEGMENT_ENTRY_SOFT_DIRTY; in pmd_soft_dirty()
854 static inline pmd_t pmd_mksoft_dirty(pmd_t pmd) in pmd_mksoft_dirty() argument
856 return set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_SOFT_DIRTY)); in pmd_mksoft_dirty()
859 static inline pmd_t pmd_clear_soft_dirty(pmd_t pmd) in pmd_clear_soft_dirty() argument
861 return clear_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_SOFT_DIRTY)); in pmd_clear_soft_dirty()
909 * pgd/pmd/pte modification functions
927 static inline void set_pmd(pmd_t *pmdp, pmd_t pmd) in set_pmd() argument
929 WRITE_ONCE(*pmdp, pmd); in set_pmd()
1301 static inline unsigned long pmd_deref(pmd_t pmd) in pmd_deref() argument
1306 if (pmd_large(pmd)) in pmd_deref()
1308 return (unsigned long)__va(pmd_val(pmd) & origin_mask); in pmd_deref()
1311 static inline unsigned long pmd_pfn(pmd_t pmd) in pmd_pfn() argument
1313 return __pa(pmd_deref(pmd)) >> PAGE_SHIFT; in pmd_pfn()
1397 static inline unsigned long pmd_page_vaddr(pmd_t pmd) in pmd_page_vaddr() argument
1399 return (unsigned long) pmd_deref(pmd); in pmd_page_vaddr()
1412 #define pmd_page(pmd) pfn_to_page(pmd_pfn(pmd)) argument
1417 static inline pmd_t pmd_wrprotect(pmd_t pmd) in pmd_wrprotect() argument
1419 pmd = clear_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_WRITE)); in pmd_wrprotect()
1420 return set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_PROTECT)); in pmd_wrprotect()
1423 static inline pmd_t pmd_mkwrite(pmd_t pmd) in pmd_mkwrite() argument
1425 pmd = set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_WRITE)); in pmd_mkwrite()
1426 if (pmd_val(pmd) & _SEGMENT_ENTRY_DIRTY) in pmd_mkwrite()
1427 pmd = clear_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_PROTECT)); in pmd_mkwrite()
1428 return pmd; in pmd_mkwrite()
1431 static inline pmd_t pmd_mkclean(pmd_t pmd) in pmd_mkclean() argument
1433 pmd = clear_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_DIRTY)); in pmd_mkclean()
1434 return set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_PROTECT)); in pmd_mkclean()
1437 static inline pmd_t pmd_mkdirty(pmd_t pmd) in pmd_mkdirty() argument
1439 pmd = set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_DIRTY | _SEGMENT_ENTRY_SOFT_DIRTY)); in pmd_mkdirty()
1440 if (pmd_val(pmd) & _SEGMENT_ENTRY_WRITE) in pmd_mkdirty()
1441 pmd = clear_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_PROTECT)); in pmd_mkdirty()
1442 return pmd; in pmd_mkdirty()
1491 static inline pmd_t pmd_mkyoung(pmd_t pmd) in pmd_mkyoung() argument
1493 pmd = set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_YOUNG)); in pmd_mkyoung()
1494 if (pmd_val(pmd) & _SEGMENT_ENTRY_READ) in pmd_mkyoung()
1495 pmd = clear_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_INVALID)); in pmd_mkyoung()
1496 return pmd; in pmd_mkyoung()
1499 static inline pmd_t pmd_mkold(pmd_t pmd) in pmd_mkold() argument
1501 pmd = clear_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_YOUNG)); in pmd_mkold()
1502 return set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_INVALID)); in pmd_mkold()
1505 static inline pmd_t pmd_modify(pmd_t pmd, pgprot_t newprot) in pmd_modify() argument
1514 pmd = __pmd(pmd_val(pmd) & mask); in pmd_modify()
1515 pmd = set_pmd_bit(pmd, __pgprot(massage_pgprot_pmd(newprot))); in pmd_modify()
1516 if (!(pmd_val(pmd) & _SEGMENT_ENTRY_DIRTY)) in pmd_modify()
1517 pmd = set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_PROTECT)); in pmd_modify()
1518 if (!(pmd_val(pmd) & _SEGMENT_ENTRY_YOUNG)) in pmd_modify()
1519 pmd = set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_INVALID)); in pmd_modify()
1520 return pmd; in pmd_modify()
1629 pmd_t pmd = *pmdp; in pmdp_test_and_clear_young() local
1631 pmd = pmdp_xchg_direct(vma->vm_mm, addr, pmdp, pmd_mkold(pmd)); in pmdp_test_and_clear_young()
1632 return pmd_young(pmd); in pmdp_test_and_clear_young()
1651 static inline pmd_t pmd_mkhuge(pmd_t pmd) in pmd_mkhuge() argument
1653 pmd = set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_LARGE)); in pmd_mkhuge()
1654 pmd = set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_YOUNG)); in pmd_mkhuge()
1655 return set_pmd_bit(pmd, __pgprot(_SEGMENT_ENTRY_PROTECT)); in pmd_mkhuge()
1671 pmd_t pmd = *pmdp; in pmdp_huge_get_and_clear_full() local
1673 return pmd; in pmdp_huge_get_and_clear_full()
1689 pmd_t pmd = __pmd(pmd_val(*pmdp) | _SEGMENT_ENTRY_INVALID); in pmdp_invalidate() local
1691 return pmdp_xchg_direct(vma->vm_mm, addr, pmdp, pmd); in pmdp_invalidate()
1698 pmd_t pmd = *pmdp; in pmdp_set_wrprotect() local
1700 if (pmd_write(pmd)) in pmdp_set_wrprotect()
1701 pmd = pmdp_xchg_lazy(mm, addr, pmdp, pmd_wrprotect(pmd)); in pmdp_set_wrprotect()
1715 static inline int pmd_trans_huge(pmd_t pmd) in pmd_trans_huge() argument
1717 return pmd_val(pmd) & _SEGMENT_ENTRY_LARGE; in pmd_trans_huge()
1793 #define pmd_pgtable(pmd) \ argument
1794 ((pgtable_t)__va(pmd_val(pmd) & -sizeof(pte_t)*PTRS_PER_PTE))