|
@@ -62,53 +62,6 @@ static inline unsigned long pte_bitop(unsigned long value, unsigned int rightshi
|
|
|
return ((value >> rightshift) & mask) << leftshift;
|
|
|
}
|
|
|
|
|
|
-#ifdef CONFIG_MEM_SOFT_DIRTY
|
|
|
-
|
|
|
-/*
|
|
|
- * Bits _PAGE_BIT_PRESENT, _PAGE_BIT_FILE, _PAGE_BIT_SOFT_DIRTY and
|
|
|
- * _PAGE_BIT_PROTNONE are taken, split up the 28 bits of offset
|
|
|
- * into this range.
|
|
|
- */
|
|
|
-#define PTE_FILE_MAX_BITS 28
|
|
|
-#define PTE_FILE_SHIFT1 (_PAGE_BIT_PRESENT + 1)
|
|
|
-#define PTE_FILE_SHIFT2 (_PAGE_BIT_FILE + 1)
|
|
|
-#define PTE_FILE_SHIFT3 (_PAGE_BIT_PROTNONE + 1)
|
|
|
-#define PTE_FILE_SHIFT4 (_PAGE_BIT_SOFT_DIRTY + 1)
|
|
|
-#define PTE_FILE_BITS1 (PTE_FILE_SHIFT2 - PTE_FILE_SHIFT1 - 1)
|
|
|
-#define PTE_FILE_BITS2 (PTE_FILE_SHIFT3 - PTE_FILE_SHIFT2 - 1)
|
|
|
-#define PTE_FILE_BITS3 (PTE_FILE_SHIFT4 - PTE_FILE_SHIFT3 - 1)
|
|
|
-
|
|
|
-#define PTE_FILE_MASK1 ((1U << PTE_FILE_BITS1) - 1)
|
|
|
-#define PTE_FILE_MASK2 ((1U << PTE_FILE_BITS2) - 1)
|
|
|
-#define PTE_FILE_MASK3 ((1U << PTE_FILE_BITS3) - 1)
|
|
|
-
|
|
|
-#define PTE_FILE_LSHIFT2 (PTE_FILE_BITS1)
|
|
|
-#define PTE_FILE_LSHIFT3 (PTE_FILE_BITS1 + PTE_FILE_BITS2)
|
|
|
-#define PTE_FILE_LSHIFT4 (PTE_FILE_BITS1 + PTE_FILE_BITS2 + PTE_FILE_BITS3)
|
|
|
-
|
|
|
-static __always_inline pgoff_t pte_to_pgoff(pte_t pte)
|
|
|
-{
|
|
|
- return (pgoff_t)
|
|
|
- (pte_bitop(pte.pte_low, PTE_FILE_SHIFT1, PTE_FILE_MASK1, 0) +
|
|
|
- pte_bitop(pte.pte_low, PTE_FILE_SHIFT2, PTE_FILE_MASK2, PTE_FILE_LSHIFT2) +
|
|
|
- pte_bitop(pte.pte_low, PTE_FILE_SHIFT3, PTE_FILE_MASK3, PTE_FILE_LSHIFT3) +
|
|
|
- pte_bitop(pte.pte_low, PTE_FILE_SHIFT4, -1UL, PTE_FILE_LSHIFT4));
|
|
|
-}
|
|
|
-
|
|
|
-static __always_inline pte_t pgoff_to_pte(pgoff_t off)
|
|
|
-{
|
|
|
- return (pte_t){
|
|
|
- .pte_low =
|
|
|
- pte_bitop(off, 0, PTE_FILE_MASK1, PTE_FILE_SHIFT1) +
|
|
|
- pte_bitop(off, PTE_FILE_LSHIFT2, PTE_FILE_MASK2, PTE_FILE_SHIFT2) +
|
|
|
- pte_bitop(off, PTE_FILE_LSHIFT3, PTE_FILE_MASK3, PTE_FILE_SHIFT3) +
|
|
|
- pte_bitop(off, PTE_FILE_LSHIFT4, -1UL, PTE_FILE_SHIFT4) +
|
|
|
- _PAGE_FILE,
|
|
|
- };
|
|
|
-}
|
|
|
-
|
|
|
-#else /* CONFIG_MEM_SOFT_DIRTY */
|
|
|
-
|
|
|
/*
|
|
|
* Bits _PAGE_BIT_PRESENT, _PAGE_BIT_FILE and _PAGE_BIT_PROTNONE are taken,
|
|
|
* split up the 29 bits of offset into this range.
|
|
@@ -145,8 +98,6 @@ static __always_inline pte_t pgoff_to_pte(pgoff_t off)
|
|
|
};
|
|
|
}
|
|
|
|
|
|
-#endif /* CONFIG_MEM_SOFT_DIRTY */
|
|
|
-
|
|
|
/* Encode and de-code a swap entry */
|
|
|
#define SWP_TYPE_BITS (_PAGE_BIT_FILE - _PAGE_BIT_PRESENT - 1)
|
|
|
#define SWP_OFFSET_SHIFT (_PAGE_BIT_PROTNONE + 1)
|