.. | .. |
---|
22 | 22 | #include <asm/tlbflush.h> |
---|
23 | 23 | |
---|
24 | 24 | #include <asm/pgtable-bits.h> |
---|
25 | | -#define __ARCH_USE_5LEVEL_HACK |
---|
26 | 25 | #include <asm-generic/pgtable-nopmd.h> |
---|
27 | 26 | |
---|
28 | 27 | #define FIRST_USER_ADDRESS 0UL |
---|
.. | .. |
---|
100 | 99 | */ |
---|
101 | 100 | static inline void set_pmd(pmd_t *pmdptr, pmd_t pmdval) |
---|
102 | 101 | { |
---|
103 | | - pmdptr->pud.pgd.pgd = pmdval.pud.pgd.pgd; |
---|
| 102 | + *pmdptr = pmdval; |
---|
104 | 103 | } |
---|
105 | | - |
---|
106 | | -/* to find an entry in a page-table-directory */ |
---|
107 | | -#define pgd_index(addr) (((addr) >> PGDIR_SHIFT) & (PTRS_PER_PGD - 1)) |
---|
108 | | -#define pgd_offset(mm, addr) ((mm)->pgd + pgd_index(addr)) |
---|
109 | 104 | |
---|
110 | 105 | static inline int pte_write(pte_t pte) \ |
---|
111 | 106 | { return pte_val(pte) & _PAGE_WRITE; } |
---|
.. | .. |
---|
113 | 108 | { return pte_val(pte) & _PAGE_DIRTY; } |
---|
114 | 109 | static inline int pte_young(pte_t pte) \ |
---|
115 | 110 | { return pte_val(pte) & _PAGE_ACCESSED; } |
---|
116 | | -static inline int pte_special(pte_t pte) { return 0; } |
---|
117 | 111 | |
---|
118 | 112 | #define pgprot_noncached pgprot_noncached |
---|
119 | 113 | |
---|
.. | .. |
---|
167 | 161 | pte_val(pte) |= _PAGE_DIRTY; |
---|
168 | 162 | return pte; |
---|
169 | 163 | } |
---|
170 | | - |
---|
171 | | -static inline pte_t pte_mkspecial(pte_t pte) { return pte; } |
---|
172 | 164 | |
---|
173 | 165 | static inline pte_t pte_mkyoung(pte_t pte) |
---|
174 | 166 | { |
---|
.. | .. |
---|
232 | 224 | pte_val(null) = (addr >> PAGE_SHIFT) & 0xf; |
---|
233 | 225 | |
---|
234 | 226 | set_pte_at(mm, addr, ptep, null); |
---|
235 | | - flush_tlb_one(addr); |
---|
236 | 227 | } |
---|
237 | 228 | |
---|
238 | 229 | /* |
---|
.. | .. |
---|
241 | 232 | */ |
---|
242 | 233 | #define mk_pte(page, prot) (pfn_pte(page_to_pfn(page), prot)) |
---|
243 | 234 | |
---|
244 | | -#define pte_unmap(pte) do { } while (0) |
---|
245 | | - |
---|
246 | 235 | /* |
---|
247 | 236 | * Conversion functions: convert a page and protection to a page entry, |
---|
248 | 237 | * and a page entry and page directory to the page they refer to. |
---|
249 | 238 | */ |
---|
250 | 239 | #define pmd_phys(pmd) virt_to_phys((void *)pmd_val(pmd)) |
---|
251 | 240 | #define pmd_page(pmd) (pfn_to_page(pmd_phys(pmd) >> PAGE_SHIFT)) |
---|
252 | | -#define pmd_page_vaddr(pmd) pmd_val(pmd) |
---|
253 | 241 | |
---|
254 | | -#define pte_offset_map(dir, addr) \ |
---|
255 | | - ((pte_t *) page_address(pmd_page(*dir)) + \ |
---|
256 | | - (((addr) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))) |
---|
257 | | - |
---|
258 | | -/* to find an entry in a kernel page-table-directory */ |
---|
259 | | -#define pgd_offset_k(addr) pgd_offset(&init_mm, addr) |
---|
260 | | - |
---|
261 | | -/* Get the address to the PTE for a vaddr in specific directory */ |
---|
262 | | -#define pte_offset_kernel(dir, addr) \ |
---|
263 | | - ((pte_t *) pmd_page_vaddr(*(dir)) + \ |
---|
264 | | - (((addr) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))) |
---|
| 242 | +static inline unsigned long pmd_page_vaddr(pmd_t pmd) |
---|
| 243 | +{ |
---|
| 244 | + return pmd_val(pmd); |
---|
| 245 | +} |
---|
265 | 246 | |
---|
266 | 247 | #define pte_ERROR(e) \ |
---|
267 | 248 | pr_err("%s:%d: bad pte %08lx.\n", \ |
---|
.. | .. |
---|
289 | 270 | #define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) }) |
---|
290 | 271 | |
---|
291 | 272 | #define kern_addr_valid(addr) (1) |
---|
292 | | - |
---|
293 | | -#include <asm-generic/pgtable.h> |
---|
294 | | - |
---|
295 | | -#define pgtable_cache_init() do { } while (0) |
---|
296 | 273 | |
---|
297 | 274 | extern void __init paging_init(void); |
---|
298 | 275 | extern void __init mmu_init(void); |
---|