Rev 5270 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5270 | Rev 6082 | ||
---|---|---|---|
Line 60... | Line 60... | ||
60 | unsigned long mask, unsigned int leftshift) |
60 | unsigned long mask, unsigned int leftshift) |
61 | { |
61 | { |
62 | return ((value >> rightshift) & mask) << leftshift; |
62 | return ((value >> rightshift) & mask) << leftshift; |
63 | } |
63 | } |
Line 64... | Line -... | ||
64 | - | ||
65 | /* |
- | |
66 | * Bits _PAGE_BIT_PRESENT, _PAGE_BIT_FILE and _PAGE_BIT_PROTNONE are taken, |
- | |
67 | * split up the 29 bits of offset into this range. |
- | |
68 | */ |
- | |
69 | #define PTE_FILE_MAX_BITS 29 |
- | |
70 | #define PTE_FILE_SHIFT1 (_PAGE_BIT_PRESENT + 1) |
- | |
71 | #define PTE_FILE_SHIFT2 (_PAGE_BIT_FILE + 1) |
- | |
72 | #define PTE_FILE_SHIFT3 (_PAGE_BIT_PROTNONE + 1) |
- | |
73 | #define PTE_FILE_BITS1 (PTE_FILE_SHIFT2 - PTE_FILE_SHIFT1 - 1) |
- | |
74 | #define PTE_FILE_BITS2 (PTE_FILE_SHIFT3 - PTE_FILE_SHIFT2 - 1) |
- | |
75 | - | ||
76 | #define PTE_FILE_MASK1 ((1U << PTE_FILE_BITS1) - 1) |
- | |
77 | #define PTE_FILE_MASK2 ((1U << PTE_FILE_BITS2) - 1) |
- | |
78 | - | ||
79 | #define PTE_FILE_LSHIFT2 (PTE_FILE_BITS1) |
- | |
80 | #define PTE_FILE_LSHIFT3 (PTE_FILE_BITS1 + PTE_FILE_BITS2) |
- | |
81 | - | ||
82 | static __always_inline pgoff_t pte_to_pgoff(pte_t pte) |
- | |
83 | { |
- | |
84 | return (pgoff_t) |
- | |
85 | (pte_bitop(pte.pte_low, PTE_FILE_SHIFT1, PTE_FILE_MASK1, 0) + |
- | |
86 | pte_bitop(pte.pte_low, PTE_FILE_SHIFT2, PTE_FILE_MASK2, PTE_FILE_LSHIFT2) + |
- | |
87 | pte_bitop(pte.pte_low, PTE_FILE_SHIFT3, -1UL, PTE_FILE_LSHIFT3)); |
- | |
88 | } |
- | |
89 | - | ||
90 | static __always_inline pte_t pgoff_to_pte(pgoff_t off) |
- | |
91 | { |
- | |
92 | return (pte_t){ |
- | |
93 | .pte_low = |
- | |
94 | pte_bitop(off, 0, PTE_FILE_MASK1, PTE_FILE_SHIFT1) + |
- | |
95 | pte_bitop(off, PTE_FILE_LSHIFT2, PTE_FILE_MASK2, PTE_FILE_SHIFT2) + |
- | |
96 | pte_bitop(off, PTE_FILE_LSHIFT3, -1UL, PTE_FILE_SHIFT3) + |
- | |
97 | _PAGE_FILE, |
- | |
98 | }; |
- | |
99 | } |
- | |
100 | 64 | ||
101 | /* Encode and de-code a swap entry */ |
65 | /* Encode and de-code a swap entry */ |
102 | #define SWP_TYPE_BITS (_PAGE_BIT_FILE - _PAGE_BIT_PRESENT - 1) |
66 | #define SWP_TYPE_BITS 5 |
Line 103... | Line 67... | ||
103 | #define SWP_OFFSET_SHIFT (_PAGE_BIT_PROTNONE + 1) |
67 | #define SWP_OFFSET_SHIFT (_PAGE_BIT_PROTNONE + 1) |
Line 104... | Line 68... | ||
104 | 68 |