s390/mm: add p?d_folded() helper functions
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Sat, 20 May 2017 09:43:26 +0000 (11:43 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Mon, 12 Jun 2017 14:26:00 +0000 (16:26 +0200)
Introduce and use p?d_folded() functions to clarify the page table
code a bit more.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/include/asm/pgtable.h

index 6f8a67a..57057fb 100644 (file)
@@ -563,18 +563,23 @@ static inline void crdte(unsigned long old, unsigned long new,
 }
 
 /*
- * pgd/pmd/pte query functions
+ * pgd/p4d/pud/pmd/pte query functions
  */
+static inline int pgd_folded(pgd_t pgd)
+{
+       return (pgd_val(pgd) & _REGION_ENTRY_TYPE_MASK) < _REGION_ENTRY_TYPE_R1;
+}
+
 static inline int pgd_present(pgd_t pgd)
 {
-       if ((pgd_val(pgd) & _REGION_ENTRY_TYPE_MASK) < _REGION_ENTRY_TYPE_R1)
+       if (pgd_folded(pgd))
                return 1;
        return (pgd_val(pgd) & _REGION_ENTRY_ORIGIN) != 0UL;
 }
 
 static inline int pgd_none(pgd_t pgd)
 {
-       if ((pgd_val(pgd) & _REGION_ENTRY_TYPE_MASK) < _REGION_ENTRY_TYPE_R1)
+       if (pgd_folded(pgd))
                return 0;
        return (pgd_val(pgd) & _REGION_ENTRY_INVALID) != 0UL;
 }
@@ -592,16 +597,21 @@ static inline int pgd_bad(pgd_t pgd)
        return (pgd_val(pgd) & mask) != 0;
 }
 
+static inline int p4d_folded(p4d_t p4d)
+{
+       return (p4d_val(p4d) & _REGION_ENTRY_TYPE_MASK) < _REGION_ENTRY_TYPE_R2;
+}
+
 static inline int p4d_present(p4d_t p4d)
 {
-       if ((p4d_val(p4d) & _REGION_ENTRY_TYPE_MASK) < _REGION_ENTRY_TYPE_R2)
+       if (p4d_folded(p4d))
                return 1;
        return (p4d_val(p4d) & _REGION_ENTRY_ORIGIN) != 0UL;
 }
 
 static inline int p4d_none(p4d_t p4d)
 {
-       if ((p4d_val(p4d) & _REGION_ENTRY_TYPE_MASK) < _REGION_ENTRY_TYPE_R2)
+       if (p4d_folded(p4d))
                return 0;
        return p4d_val(p4d) == _REGION2_ENTRY_EMPTY;
 }
@@ -614,16 +624,21 @@ static inline unsigned long p4d_pfn(p4d_t p4d)
        return (p4d_val(p4d) & origin_mask) >> PAGE_SHIFT;
 }
 
+static inline int pud_folded(pud_t pud)
+{
+       return (pud_val(pud) & _REGION_ENTRY_TYPE_MASK) < _REGION_ENTRY_TYPE_R3;
+}
+
 static inline int pud_present(pud_t pud)
 {
-       if ((pud_val(pud) & _REGION_ENTRY_TYPE_MASK) < _REGION_ENTRY_TYPE_R3)
+       if (pud_folded(pud))
                return 1;
        return (pud_val(pud) & _REGION_ENTRY_ORIGIN) != 0UL;
 }
 
 static inline int pud_none(pud_t pud)
 {
-       if ((pud_val(pud) & _REGION_ENTRY_TYPE_MASK) < _REGION_ENTRY_TYPE_R3)
+       if (pud_folded(pud))
                return 0;
        return pud_val(pud) == _REGION3_ENTRY_EMPTY;
 }