diff options
author | Steven J. Hill <Steven.Hill@imgtec.com> | 2014-11-13 10:52:01 -0500 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2014-11-24 16:47:31 -0500 |
commit | 77a5c59332aa75e66f0d95f9eeb69baf3c68970d (patch) | |
tree | 056fbf0cf9ad46977342474e706ac5162a1a1b15 /arch/mips/include | |
parent | 23d06e4fb7138e29ef77edf2fa918acc20ad5f8d (diff) |
MIPS: Cosmetic cleanups of page table headers.
* Clean up white spaces and tabs.
* Remove _PAGE_R4KBUG which is no longer used.
* Get rid of hardcoded values and calculate shifts and
masks where possible.
Signed-off-by: Steven J. Hill <Steven.Hill@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/8457/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/include')
-rw-r--r-- | arch/mips/include/asm/pgtable-32.h | 98 | ||||
-rw-r--r-- | arch/mips/include/asm/pgtable-bits.h | 32 | ||||
-rw-r--r-- | arch/mips/include/asm/pgtable.h | 8 |
3 files changed, 71 insertions, 67 deletions
diff --git a/arch/mips/include/asm/pgtable-32.h b/arch/mips/include/asm/pgtable-32.h index 3021a9459f7f..68984b612f9d 100644 --- a/arch/mips/include/asm/pgtable-32.h +++ b/arch/mips/include/asm/pgtable-32.h | |||
@@ -155,73 +155,75 @@ pfn_pte(unsigned long pfn, pgprot_t prot) | |||
155 | #if defined(CONFIG_CPU_R3000) || defined(CONFIG_CPU_TX39XX) | 155 | #if defined(CONFIG_CPU_R3000) || defined(CONFIG_CPU_TX39XX) |
156 | 156 | ||
157 | /* Swap entries must have VALID bit cleared. */ | 157 | /* Swap entries must have VALID bit cleared. */ |
158 | #define __swp_type(x) (((x).val >> 10) & 0x1f) | 158 | #define __swp_type(x) (((x).val >> 10) & 0x1f) |
159 | #define __swp_offset(x) ((x).val >> 15) | 159 | #define __swp_offset(x) ((x).val >> 15) |
160 | #define __swp_entry(type,offset) \ | 160 | #define __swp_entry(type,offset) ((swp_entry_t) { ((type) << 10) | ((offset) << 15) }) |
161 | ((swp_entry_t) { ((type) << 10) | ((offset) << 15) }) | 161 | #define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) }) |
162 | #define __swp_entry_to_pte(x) ((pte_t) { (x).val }) | ||
162 | 163 | ||
163 | /* | 164 | /* |
164 | * Bits 0, 4, 8, and 9 are taken, split up 28 bits of offset into this range: | 165 | * Encode and decode a nonlinear file mapping entry |
165 | */ | 166 | */ |
166 | #define PTE_FILE_MAX_BITS 28 | 167 | #define pte_to_pgoff(_pte) ((((_pte).pte >> 1 ) & 0x07) | \ |
167 | 168 | (((_pte).pte >> 2 ) & 0x38) | \ | |
168 | #define pte_to_pgoff(_pte) ((((_pte).pte >> 1 ) & 0x07) | \ | 169 | (((_pte).pte >> 10) << 6 )) |
169 | (((_pte).pte >> 2 ) & 0x38) | \ | ||
170 | (((_pte).pte >> 10) << 6 )) | ||
171 | 170 | ||
172 | #define pgoff_to_pte(off) ((pte_t) { (((off) & 0x07) << 1 ) | \ | 171 | #define pgoff_to_pte(off) ((pte_t) { (((off) & 0x07) << 1 ) | \ |
173 | (((off) & 0x38) << 2 ) | \ | 172 | (((off) & 0x38) << 2 ) | \ |
174 | (((off) >> 6 ) << 10) | \ | 173 | (((off) >> 6 ) << 10) | \ |
175 | _PAGE_FILE }) | 174 | _PAGE_FILE }) |
176 | 175 | ||
176 | /* | ||
177 | * Bits 0, 4, 8, and 9 are taken, split up 28 bits of offset into this range: | ||
178 | */ | ||
179 | #define PTE_FILE_MAX_BITS 28 | ||
177 | #else | 180 | #else |
178 | 181 | ||
179 | /* Swap entries must have VALID and GLOBAL bits cleared. */ | ||
180 | #if defined(CONFIG_PHYS_ADDR_T_64BIT) && defined(CONFIG_CPU_MIPS32) | 182 | #if defined(CONFIG_PHYS_ADDR_T_64BIT) && defined(CONFIG_CPU_MIPS32) |
181 | #define __swp_type(x) (((x).val >> 2) & 0x1f) | ||
182 | #define __swp_offset(x) ((x).val >> 7) | ||
183 | #define __swp_entry(type,offset) \ | ||
184 | ((swp_entry_t) { ((type) << 2) | ((offset) << 7) }) | ||
185 | #else | ||
186 | #define __swp_type(x) (((x).val >> 8) & 0x1f) | ||
187 | #define __swp_offset(x) ((x).val >> 13) | ||
188 | #define __swp_entry(type,offset) \ | ||
189 | ((swp_entry_t) { ((type) << 8) | ((offset) << 13) }) | ||
190 | #endif /* defined(CONFIG_PHYS_ADDR_T_64BIT) && defined(CONFIG_CPU_MIPS32) */ | ||
191 | 183 | ||
192 | #if defined(CONFIG_PHYS_ADDR_T_64BIT) && defined(CONFIG_CPU_MIPS32) | 184 | /* Swap entries must have VALID and GLOBAL bits cleared. */ |
185 | #define __swp_type(x) (((x).val >> 2) & 0x1f) | ||
186 | #define __swp_offset(x) ((x).val >> 7) | ||
187 | #define __swp_entry(type,offset) ((swp_entry_t) { ((type) << 2) | ((offset) << 7) }) | ||
188 | #define __pte_to_swp_entry(pte) ((swp_entry_t) { (pte).pte_high }) | ||
189 | #define __swp_entry_to_pte(x) ((pte_t) { 0, (x).val }) | ||
190 | |||
193 | /* | 191 | /* |
194 | * Bits 0 and 1 of pte_high are taken, use the rest for the page offset... | 192 | * Bits 0 and 1 of pte_high are taken, use the rest for the page offset... |
195 | */ | 193 | */ |
196 | #define PTE_FILE_MAX_BITS 30 | 194 | #define pte_to_pgoff(_pte) ((_pte).pte_high >> 2) |
197 | 195 | #define pgoff_to_pte(off) ((pte_t) { _PAGE_FILE, (off) << 2 }) | |
198 | #define pte_to_pgoff(_pte) ((_pte).pte_high >> 2) | ||
199 | #define pgoff_to_pte(off) ((pte_t) { _PAGE_FILE, (off) << 2 }) | ||
200 | 196 | ||
197 | #define PTE_FILE_MAX_BITS 30 | ||
201 | #else | 198 | #else |
202 | /* | 199 | /* |
203 | * Bits 0, 4, 6, and 7 are taken, split up 28 bits of offset into this range: | 200 | * Constraints: |
201 | * _PAGE_PRESENT at bit 0 | ||
202 | * _PAGE_MODIFIED at bit 4 | ||
203 | * _PAGE_GLOBAL at bit 6 | ||
204 | * _PAGE_VALID at bit 7 | ||
204 | */ | 205 | */ |
205 | #define PTE_FILE_MAX_BITS 28 | 206 | #define __swp_type(x) (((x).val >> 8) & 0x1f) |
207 | #define __swp_offset(x) ((x).val >> 13) | ||
208 | #define __swp_entry(type,offset) ((swp_entry_t) { ((type) << 8) | ((offset) << 13) }) | ||
209 | #define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) }) | ||
210 | #define __swp_entry_to_pte(x) ((pte_t) { (x).val }) | ||
206 | 211 | ||
207 | #define pte_to_pgoff(_pte) ((((_pte).pte >> 1) & 0x7) | \ | 212 | /* |
208 | (((_pte).pte >> 2) & 0x8) | \ | 213 | * Encode and decode a nonlinear file mapping entry |
209 | (((_pte).pte >> 8) << 4)) | 214 | */ |
215 | #define pte_to_pgoff(_pte) ((((_pte).pte >> 1) & 0x7) | \ | ||
216 | (((_pte).pte >> 2) & 0x8) | \ | ||
217 | (((_pte).pte >> 8) << 4)) | ||
210 | 218 | ||
211 | #define pgoff_to_pte(off) ((pte_t) { (((off) & 0x7) << 1) | \ | 219 | #define pgoff_to_pte(off) ((pte_t) { (((off) & 0x7) << 1) | \ |
212 | (((off) & 0x8) << 2) | \ | 220 | (((off) & 0x8) << 2) | \ |
213 | (((off) >> 4) << 8) | \ | 221 | (((off) >> 4) << 8) | \ |
214 | _PAGE_FILE }) | 222 | _PAGE_FILE }) |
215 | #endif | ||
216 | 223 | ||
217 | #endif | 224 | #define PTE_FILE_MAX_BITS 28 |
225 | #endif /* defined(CONFIG_PHYS_ADDR_T_64BIT) && defined(CONFIG_CPU_MIPS32) */ | ||
218 | 226 | ||
219 | #if defined(CONFIG_PHYS_ADDR_T_64BIT) && defined(CONFIG_CPU_MIPS32) | 227 | #endif /* defined(CONFIG_CPU_R3000) || defined(CONFIG_CPU_TX39XX) */ |
220 | #define __pte_to_swp_entry(pte) ((swp_entry_t) { (pte).pte_high }) | ||
221 | #define __swp_entry_to_pte(x) ((pte_t) { 0, (x).val }) | ||
222 | #else | ||
223 | #define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) }) | ||
224 | #define __swp_entry_to_pte(x) ((pte_t) { (x).val }) | ||
225 | #endif | ||
226 | 228 | ||
227 | #endif /* _ASM_PGTABLE_32_H */ | 229 | #endif /* _ASM_PGTABLE_32_H */ |
diff --git a/arch/mips/include/asm/pgtable-bits.h b/arch/mips/include/asm/pgtable-bits.h index 29ba35954e2e..ca11f14f40a3 100644 --- a/arch/mips/include/asm/pgtable-bits.h +++ b/arch/mips/include/asm/pgtable-bits.h | |||
@@ -37,34 +37,36 @@ | |||
37 | /* | 37 | /* |
38 | * The following bits are directly used by the TLB hardware | 38 | * The following bits are directly used by the TLB hardware |
39 | */ | 39 | */ |
40 | #define _PAGE_R4KBUG (1 << 0) /* workaround for r4k bug */ | 40 | #define _PAGE_GLOBAL_SHIFT 0 |
41 | #define _PAGE_GLOBAL (1 << 0) | 41 | #define _PAGE_GLOBAL (1 << _PAGE_GLOBAL_SHIFT) |
42 | #define _PAGE_VALID_SHIFT 1 | 42 | #define _PAGE_VALID_SHIFT (_PAGE_GLOBAL_SHIFT + 1) |
43 | #define _PAGE_VALID (1 << _PAGE_VALID_SHIFT) | 43 | #define _PAGE_VALID (1 << _PAGE_VALID_SHIFT) |
44 | #define _PAGE_SILENT_READ (1 << 1) /* synonym */ | 44 | #define _PAGE_DIRTY_SHIFT (_PAGE_VALID_SHIFT + 1) |
45 | #define _PAGE_DIRTY_SHIFT 2 | 45 | #define _PAGE_DIRTY (1 << _PAGE_DIRTY_SHIFT) |
46 | #define _PAGE_DIRTY (1 << _PAGE_DIRTY_SHIFT) /* The MIPS dirty bit */ | 46 | #define _CACHE_SHIFT (_PAGE_DIRTY_SHIFT + 1) |
47 | #define _PAGE_SILENT_WRITE (1 << 2) | 47 | #define _CACHE_MASK (7 << _CACHE_SHIFT) |
48 | #define _CACHE_SHIFT 3 | ||
49 | #define _CACHE_MASK (7 << 3) | ||
50 | 48 | ||
51 | /* | 49 | /* |
52 | * The following bits are implemented in software | 50 | * The following bits are implemented in software |
53 | * | 51 | * |
54 | * _PAGE_FILE semantics: set:pagecache unset:swap | 52 | * _PAGE_FILE semantics: set:pagecache unset:swap |
55 | */ | 53 | */ |
56 | #define _PAGE_PRESENT_SHIFT 6 | 54 | #define _PAGE_PRESENT_SHIFT (_CACHE_SHIFT + 3) |
57 | #define _PAGE_PRESENT (1 << _PAGE_PRESENT_SHIFT) | 55 | #define _PAGE_PRESENT (1 << _PAGE_PRESENT_SHIFT) |
58 | #define _PAGE_READ_SHIFT 7 | 56 | #define _PAGE_READ_SHIFT (_PAGE_PRESENT_SHIFT + 1) |
59 | #define _PAGE_READ (1 << _PAGE_READ_SHIFT) | 57 | #define _PAGE_READ (1 << _PAGE_READ_SHIFT) |
60 | #define _PAGE_WRITE_SHIFT 8 | 58 | #define _PAGE_WRITE_SHIFT (_PAGE_READ_SHIFT + 1) |
61 | #define _PAGE_WRITE (1 << _PAGE_WRITE_SHIFT) | 59 | #define _PAGE_WRITE (1 << _PAGE_WRITE_SHIFT) |
62 | #define _PAGE_ACCESSED_SHIFT 9 | 60 | #define _PAGE_ACCESSED_SHIFT (_PAGE_WRITE_SHIFT + 1) |
63 | #define _PAGE_ACCESSED (1 << _PAGE_ACCESSED_SHIFT) | 61 | #define _PAGE_ACCESSED (1 << _PAGE_ACCESSED_SHIFT) |
64 | #define _PAGE_MODIFIED_SHIFT 10 | 62 | #define _PAGE_MODIFIED_SHIFT (_PAGE_ACCESSED_SHIFT + 1) |
65 | #define _PAGE_MODIFIED (1 << _PAGE_MODIFIED_SHIFT) | 63 | #define _PAGE_MODIFIED (1 << _PAGE_MODIFIED_SHIFT) |
66 | 64 | ||
67 | #define _PAGE_FILE (1 << 10) | 65 | #define _PAGE_SILENT_READ _PAGE_VALID |
66 | #define _PAGE_SILENT_WRITE _PAGE_DIRTY | ||
67 | #define _PAGE_FILE _PAGE_MODIFIED | ||
68 | |||
69 | #define _PFN_SHIFT (PAGE_SHIFT - 12 + _CACHE_SHIFT + 3) | ||
68 | 70 | ||
69 | #elif defined(CONFIG_CPU_R3000) || defined(CONFIG_CPU_TX39XX) | 71 | #elif defined(CONFIG_CPU_R3000) || defined(CONFIG_CPU_TX39XX) |
70 | 72 | ||
diff --git a/arch/mips/include/asm/pgtable.h b/arch/mips/include/asm/pgtable.h index e87aea9494aa..62a6ba383d4f 100644 --- a/arch/mips/include/asm/pgtable.h +++ b/arch/mips/include/asm/pgtable.h | |||
@@ -297,13 +297,13 @@ static inline pte_t pte_wrprotect(pte_t pte) | |||
297 | 297 | ||
298 | static inline pte_t pte_mkclean(pte_t pte) | 298 | static inline pte_t pte_mkclean(pte_t pte) |
299 | { | 299 | { |
300 | pte_val(pte) &= ~(_PAGE_MODIFIED|_PAGE_SILENT_WRITE); | 300 | pte_val(pte) &= ~(_PAGE_MODIFIED | _PAGE_SILENT_WRITE); |
301 | return pte; | 301 | return pte; |
302 | } | 302 | } |
303 | 303 | ||
304 | static inline pte_t pte_mkold(pte_t pte) | 304 | static inline pte_t pte_mkold(pte_t pte) |
305 | { | 305 | { |
306 | pte_val(pte) &= ~(_PAGE_ACCESSED|_PAGE_SILENT_READ); | 306 | pte_val(pte) &= ~(_PAGE_ACCESSED | _PAGE_SILENT_READ); |
307 | return pte; | 307 | return pte; |
308 | } | 308 | } |
309 | 309 | ||
@@ -386,9 +386,9 @@ static inline pgprot_t pgprot_writecombine(pgprot_t _prot) | |||
386 | static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) | 386 | static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) |
387 | { | 387 | { |
388 | pte.pte_low &= _PAGE_CHG_MASK; | 388 | pte.pte_low &= _PAGE_CHG_MASK; |
389 | pte.pte_high &= ~0x3f; | 389 | pte.pte_high &= (_PFN_MASK | _CACHE_MASK); |
390 | pte.pte_low |= pgprot_val(newprot); | 390 | pte.pte_low |= pgprot_val(newprot); |
391 | pte.pte_high |= pgprot_val(newprot) & 0x3f; | 391 | pte.pte_high |= pgprot_val(newprot) & ~(_PFN_MASK | _CACHE_MASK); |
392 | return pte; | 392 | return pte; |
393 | } | 393 | } |
394 | #else | 394 | #else |