riscv: mm: add p?d_leaf() definitions
[linux-2.6-microblaze.git] / arch / riscv / include / asm / pgtable-64.h
index 7463098..b15f70a 100644 (file)
@@ -43,6 +43,13 @@ static inline int pud_bad(pud_t pud)
        return !pud_present(pud);
 }
 
+#define pud_leaf       pud_leaf
+static inline int pud_leaf(pud_t pud)
+{
+       return pud_present(pud) &&
+              (pud_val(pud) & (_PAGE_READ | _PAGE_WRITE | _PAGE_EXEC));
+}
+
 static inline void set_pud(pud_t *pudp, pud_t pud)
 {
        *pudp = pud;
@@ -58,6 +65,11 @@ static inline unsigned long pud_page_vaddr(pud_t pud)
        return (unsigned long)pfn_to_virt(pud_val(pud) >> _PAGE_PFN_SHIFT);
 }
 
+static inline struct page *pud_page(pud_t pud)
+{
+       return pfn_to_page(pud_val(pud) >> _PAGE_PFN_SHIFT);
+}
+
 #define pmd_index(addr) (((addr) >> PMD_SHIFT) & (PTRS_PER_PMD - 1))
 
 static inline pmd_t *pmd_offset(pud_t *pud, unsigned long addr)