Lines Matching refs:pmd
695 static inline int pmd_large(pmd_t pmd) in pmd_large() argument
697 return (pmd_val(pmd) & _SEGMENT_ENTRY_LARGE) != 0; in pmd_large()
700 static inline int pmd_bad(pmd_t pmd) in pmd_bad() argument
702 if ((pmd_val(pmd) & _SEGMENT_ENTRY_TYPE_MASK) > 0) in pmd_bad()
704 if (pmd_large(pmd)) in pmd_bad()
705 return (pmd_val(pmd) & ~_SEGMENT_ENTRY_BITS_LARGE) != 0; in pmd_bad()
706 return (pmd_val(pmd) & ~_SEGMENT_ENTRY_BITS) != 0; in pmd_bad()
733 static inline int pmd_present(pmd_t pmd) in pmd_present() argument
735 return pmd_val(pmd) != _SEGMENT_ENTRY_EMPTY; in pmd_present()
738 static inline int pmd_none(pmd_t pmd) in pmd_none() argument
740 return pmd_val(pmd) == _SEGMENT_ENTRY_EMPTY; in pmd_none()
743 static inline unsigned long pmd_pfn(pmd_t pmd) in pmd_pfn() argument
748 if (pmd_large(pmd)) in pmd_pfn()
750 return (pmd_val(pmd) & origin_mask) >> PAGE_SHIFT; in pmd_pfn()
754 static inline int pmd_write(pmd_t pmd) in pmd_write() argument
756 return (pmd_val(pmd) & _SEGMENT_ENTRY_WRITE) != 0; in pmd_write()
759 static inline int pmd_dirty(pmd_t pmd) in pmd_dirty() argument
762 if (pmd_large(pmd)) in pmd_dirty()
763 dirty = (pmd_val(pmd) & _SEGMENT_ENTRY_DIRTY) != 0; in pmd_dirty()
767 static inline int pmd_young(pmd_t pmd) in pmd_young() argument
770 if (pmd_large(pmd)) in pmd_young()
771 young = (pmd_val(pmd) & _SEGMENT_ENTRY_YOUNG) != 0; in pmd_young()
811 static inline int pmd_protnone(pmd_t pmd) in pmd_protnone() argument
814 return pmd_large(pmd) && !(pmd_val(pmd) & _SEGMENT_ENTRY_READ); in pmd_protnone()
838 static inline int pmd_soft_dirty(pmd_t pmd) in pmd_soft_dirty() argument
840 return pmd_val(pmd) & _SEGMENT_ENTRY_SOFT_DIRTY; in pmd_soft_dirty()
843 static inline pmd_t pmd_mksoft_dirty(pmd_t pmd) in pmd_mksoft_dirty() argument
845 pmd_val(pmd) |= _SEGMENT_ENTRY_SOFT_DIRTY; in pmd_mksoft_dirty()
846 return pmd; in pmd_mksoft_dirty()
849 static inline pmd_t pmd_clear_soft_dirty(pmd_t pmd) in pmd_clear_soft_dirty() argument
851 pmd_val(pmd) &= ~_SEGMENT_ENTRY_SOFT_DIRTY; in pmd_clear_soft_dirty()
852 return pmd; in pmd_clear_soft_dirty()
1213 #define pmd_deref(pmd) (pmd_val(pmd) & _SEGMENT_ENTRY_ORIGIN) argument
1265 static inline pte_t *pte_offset(pmd_t *pmd, unsigned long address) in pte_offset() argument
1267 return (pte_t *) pmd_deref(*pmd) + pte_index(address); in pte_offset()
1270 #define pte_offset_kernel(pmd, address) pte_offset(pmd, address) argument
1271 #define pte_offset_map(pmd, address) pte_offset_kernel(pmd, address) argument
1285 #define pmd_page(pmd) pfn_to_page(pmd_pfn(pmd)) argument
1290 static inline pmd_t pmd_wrprotect(pmd_t pmd) in pmd_wrprotect() argument
1292 pmd_val(pmd) &= ~_SEGMENT_ENTRY_WRITE; in pmd_wrprotect()
1293 pmd_val(pmd) |= _SEGMENT_ENTRY_PROTECT; in pmd_wrprotect()
1294 return pmd; in pmd_wrprotect()
1297 static inline pmd_t pmd_mkwrite(pmd_t pmd) in pmd_mkwrite() argument
1299 pmd_val(pmd) |= _SEGMENT_ENTRY_WRITE; in pmd_mkwrite()
1300 if (pmd_large(pmd) && !(pmd_val(pmd) & _SEGMENT_ENTRY_DIRTY)) in pmd_mkwrite()
1301 return pmd; in pmd_mkwrite()
1302 pmd_val(pmd) &= ~_SEGMENT_ENTRY_PROTECT; in pmd_mkwrite()
1303 return pmd; in pmd_mkwrite()
1306 static inline pmd_t pmd_mkclean(pmd_t pmd) in pmd_mkclean() argument
1308 if (pmd_large(pmd)) { in pmd_mkclean()
1309 pmd_val(pmd) &= ~_SEGMENT_ENTRY_DIRTY; in pmd_mkclean()
1310 pmd_val(pmd) |= _SEGMENT_ENTRY_PROTECT; in pmd_mkclean()
1312 return pmd; in pmd_mkclean()
1315 static inline pmd_t pmd_mkdirty(pmd_t pmd) in pmd_mkdirty() argument
1317 if (pmd_large(pmd)) { in pmd_mkdirty()
1318 pmd_val(pmd) |= _SEGMENT_ENTRY_DIRTY | in pmd_mkdirty()
1320 if (pmd_val(pmd) & _SEGMENT_ENTRY_WRITE) in pmd_mkdirty()
1321 pmd_val(pmd) &= ~_SEGMENT_ENTRY_PROTECT; in pmd_mkdirty()
1323 return pmd; in pmd_mkdirty()
1380 static inline pmd_t pmd_mkyoung(pmd_t pmd) in pmd_mkyoung() argument
1382 if (pmd_large(pmd)) { in pmd_mkyoung()
1383 pmd_val(pmd) |= _SEGMENT_ENTRY_YOUNG; in pmd_mkyoung()
1384 if (pmd_val(pmd) & _SEGMENT_ENTRY_READ) in pmd_mkyoung()
1385 pmd_val(pmd) &= ~_SEGMENT_ENTRY_INVALID; in pmd_mkyoung()
1387 return pmd; in pmd_mkyoung()
1390 static inline pmd_t pmd_mkold(pmd_t pmd) in pmd_mkold() argument
1392 if (pmd_large(pmd)) { in pmd_mkold()
1393 pmd_val(pmd) &= ~_SEGMENT_ENTRY_YOUNG; in pmd_mkold()
1394 pmd_val(pmd) |= _SEGMENT_ENTRY_INVALID; in pmd_mkold()
1396 return pmd; in pmd_mkold()
1399 static inline pmd_t pmd_modify(pmd_t pmd, pgprot_t newprot) in pmd_modify() argument
1401 if (pmd_large(pmd)) { in pmd_modify()
1402 pmd_val(pmd) &= _SEGMENT_ENTRY_ORIGIN_LARGE | in pmd_modify()
1405 pmd_val(pmd) |= massage_pgprot_pmd(newprot); in pmd_modify()
1406 if (!(pmd_val(pmd) & _SEGMENT_ENTRY_DIRTY)) in pmd_modify()
1407 pmd_val(pmd) |= _SEGMENT_ENTRY_PROTECT; in pmd_modify()
1408 if (!(pmd_val(pmd) & _SEGMENT_ENTRY_YOUNG)) in pmd_modify()
1409 pmd_val(pmd) |= _SEGMENT_ENTRY_INVALID; in pmd_modify()
1410 return pmd; in pmd_modify()
1412 pmd_val(pmd) &= _SEGMENT_ENTRY_ORIGIN; in pmd_modify()
1413 pmd_val(pmd) |= massage_pgprot_pmd(newprot); in pmd_modify()
1414 return pmd; in pmd_modify()
1525 pmd_t pmd = *pmdp; in pmdp_test_and_clear_young() local
1527 pmd = pmdp_xchg_direct(vma->vm_mm, addr, pmdp, pmd_mkold(pmd)); in pmdp_test_and_clear_young()
1528 return pmd_young(pmd); in pmdp_test_and_clear_young()
1547 static inline pmd_t pmd_mkhuge(pmd_t pmd) in pmd_mkhuge() argument
1549 pmd_val(pmd) |= _SEGMENT_ENTRY_LARGE; in pmd_mkhuge()
1550 pmd_val(pmd) |= _SEGMENT_ENTRY_YOUNG; in pmd_mkhuge()
1551 pmd_val(pmd) |= _SEGMENT_ENTRY_PROTECT; in pmd_mkhuge()
1552 return pmd; in pmd_mkhuge()
1568 pmd_t pmd = *pmdp; in pmdp_huge_get_and_clear_full() local
1570 return pmd; in pmdp_huge_get_and_clear_full()
1586 pmd_t pmd = __pmd(pmd_val(*pmdp) | _SEGMENT_ENTRY_INVALID); in pmdp_invalidate() local
1588 return pmdp_xchg_direct(vma->vm_mm, addr, pmdp, pmd); in pmdp_invalidate()
1595 pmd_t pmd = *pmdp; in pmdp_set_wrprotect() local
1597 if (pmd_write(pmd)) in pmdp_set_wrprotect()
1598 pmd = pmdp_xchg_lazy(mm, addr, pmdp, pmd_wrprotect(pmd)); in pmdp_set_wrprotect()
1612 static inline int pmd_trans_huge(pmd_t pmd) in pmd_trans_huge() argument
1614 return pmd_val(pmd) & _SEGMENT_ENTRY_LARGE; in pmd_trans_huge()