/*
  * Common bits between hash and Radix page table
  */
-#define _PAGE_BIT_SWAP_TYPE    0
 
 #define _PAGE_EXEC             0x00001 /* execute permission */
 #define _PAGE_WRITE            0x00002 /* write access allowed */
         * Don't have overlapping bits with _PAGE_HPTEFLAGS     \
         * We filter HPTEFLAGS on set_pte.                      \
         */                                                     \
-       BUILD_BUG_ON(_PAGE_HPTEFLAGS & (0x1f << _PAGE_BIT_SWAP_TYPE)); \
+       BUILD_BUG_ON(_PAGE_HPTEFLAGS & SWP_TYPE_MASK); \
        BUILD_BUG_ON(_PAGE_HPTEFLAGS & _PAGE_SWP_SOFT_DIRTY);   \
        } while (0)
 
 #define SWP_TYPE_BITS 5
-#define __swp_type(x)          (((x).val >> _PAGE_BIT_SWAP_TYPE) \
-                               & ((1UL << SWP_TYPE_BITS) - 1))
+#define SWP_TYPE_MASK          ((1UL << SWP_TYPE_BITS) - 1)
+#define __swp_type(x)          ((x).val & SWP_TYPE_MASK)
 #define __swp_offset(x)                (((x).val & PTE_RPN_MASK) >> PAGE_SHIFT)
 #define __swp_entry(type, offset)      ((swp_entry_t) { \
-                               ((type) << _PAGE_BIT_SWAP_TYPE) \
-                               | (((offset) << PAGE_SHIFT) & PTE_RPN_MASK)})
+                               (type) | (((offset) << PAGE_SHIFT) & PTE_RPN_MASK)})
 /*
  * swp_entry_t must be independent of pte bits. We build a swp_entry_t from
  * swap type and offset we get from swap and convert that to pte to find a
 #define __swp_entry_to_pmd(x)  (pte_pmd(__swp_entry_to_pte(x)))
 
 #ifdef CONFIG_MEM_SOFT_DIRTY
-#define _PAGE_SWP_SOFT_DIRTY   (1UL << (SWP_TYPE_BITS + _PAGE_BIT_SWAP_TYPE))
+#define _PAGE_SWP_SOFT_DIRTY   _PAGE_NON_IDEMPOTENT
 #else
 #define _PAGE_SWP_SOFT_DIRTY   0UL
 #endif /* CONFIG_MEM_SOFT_DIRTY */