.. | .. |
---|
170 | 170 | } |
---|
171 | 171 | |
---|
172 | 172 | #define __pte_page(pte) ((unsigned long) (pte_val(pte) & PAGE_MASK)) |
---|
173 | | -#define __pmd_page(pmd) ((unsigned long) (pmd_val(pmd))) |
---|
| 173 | +#define pmd_page_vaddr(pmd) ((unsigned long) (pmd_val(pmd))) |
---|
174 | 174 | |
---|
175 | 175 | static inline int pte_none(pte_t pte) |
---|
176 | 176 | { |
---|
.. | .. |
---|
198 | 198 | #define pmd_present(pmd) (!pmd_none2(&(pmd))) |
---|
199 | 199 | static inline void pmd_clear(pmd_t *pmdp) { pmd_val(*pmdp) = 0; } |
---|
200 | 200 | |
---|
201 | | -static inline int pgd_none(pgd_t pgd) { return 0; } |
---|
202 | | -static inline int pgd_bad(pgd_t pgd) { return 0; } |
---|
203 | | -static inline int pgd_present(pgd_t pgd) { return 1; } |
---|
204 | | -static inline void pgd_clear(pgd_t *pgdp) {} |
---|
205 | | - |
---|
206 | 201 | #define pte_ERROR(e) \ |
---|
207 | 202 | printk(KERN_ERR "%s:%d: bad pte %08lx.\n", \ |
---|
208 | 203 | __FILE__, __LINE__, pte_val(e)) |
---|
209 | | -#define pmd_ERROR(e) \ |
---|
210 | | - printk(KERN_ERR "%s:%d: bad pmd %08lx.\n", \ |
---|
211 | | - __FILE__, __LINE__, pmd_val(e)) |
---|
212 | 204 | #define pgd_ERROR(e) \ |
---|
213 | 205 | printk(KERN_ERR "%s:%d: bad pgd %08lx.\n", \ |
---|
214 | 206 | __FILE__, __LINE__, pgd_val(e)) |
---|
.. | .. |
---|
241 | 233 | static inline int pte_young(pte_t pte) |
---|
242 | 234 | { |
---|
243 | 235 | return pte_val(pte) & CF_PAGE_ACCESSED; |
---|
244 | | -} |
---|
245 | | - |
---|
246 | | -static inline int pte_special(pte_t pte) |
---|
247 | | -{ |
---|
248 | | - return 0; |
---|
249 | 236 | } |
---|
250 | 237 | |
---|
251 | 238 | static inline pte_t pte_wrprotect(pte_t pte) |
---|
.. | .. |
---|
320 | 307 | return pte; |
---|
321 | 308 | } |
---|
322 | 309 | |
---|
323 | | -static inline pte_t pte_mkspecial(pte_t pte) |
---|
324 | | -{ |
---|
325 | | - return pte; |
---|
326 | | -} |
---|
327 | | - |
---|
328 | 310 | #define swapper_pg_dir kernel_pg_dir |
---|
329 | 311 | extern pgd_t kernel_pg_dir[PTRS_PER_PGD]; |
---|
330 | | - |
---|
331 | | -/* |
---|
332 | | - * Find an entry in a pagetable directory. |
---|
333 | | - */ |
---|
334 | | -#define pgd_index(address) ((address) >> PGDIR_SHIFT) |
---|
335 | | -#define pgd_offset(mm, address) ((mm)->pgd + pgd_index(address)) |
---|
336 | | - |
---|
337 | | -/* |
---|
338 | | - * Find an entry in a kernel pagetable directory. |
---|
339 | | - */ |
---|
340 | | -#define pgd_offset_k(address) pgd_offset(&init_mm, address) |
---|
341 | | - |
---|
342 | | -/* |
---|
343 | | - * Find an entry in the second-level pagetable. |
---|
344 | | - */ |
---|
345 | | -static inline pmd_t *pmd_offset(pgd_t *pgd, unsigned long address) |
---|
346 | | -{ |
---|
347 | | - return (pmd_t *) pgd; |
---|
348 | | -} |
---|
349 | | - |
---|
350 | | -/* |
---|
351 | | - * Find an entry in the third-level pagetable. |
---|
352 | | - */ |
---|
353 | | -#define __pte_offset(address) ((address >> PAGE_SHIFT) & (PTRS_PER_PTE - 1)) |
---|
354 | | -#define pte_offset_kernel(dir, address) \ |
---|
355 | | - ((pte_t *) __pmd_page(*(dir)) + __pte_offset(address)) |
---|
356 | | - |
---|
357 | | -/* |
---|
358 | | - * Disable caching for page at given kernel virtual address. |
---|
359 | | - */ |
---|
360 | | -static inline void nocache_page(void *vaddr) |
---|
361 | | -{ |
---|
362 | | - pgd_t *dir; |
---|
363 | | - pmd_t *pmdp; |
---|
364 | | - pte_t *ptep; |
---|
365 | | - unsigned long addr = (unsigned long) vaddr; |
---|
366 | | - |
---|
367 | | - dir = pgd_offset_k(addr); |
---|
368 | | - pmdp = pmd_offset(dir, addr); |
---|
369 | | - ptep = pte_offset_kernel(pmdp, addr); |
---|
370 | | - *ptep = pte_mknocache(*ptep); |
---|
371 | | -} |
---|
372 | | - |
---|
373 | | -/* |
---|
374 | | - * Enable caching for page at given kernel virtual address. |
---|
375 | | - */ |
---|
376 | | -static inline void cache_page(void *vaddr) |
---|
377 | | -{ |
---|
378 | | - pgd_t *dir; |
---|
379 | | - pmd_t *pmdp; |
---|
380 | | - pte_t *ptep; |
---|
381 | | - unsigned long addr = (unsigned long) vaddr; |
---|
382 | | - |
---|
383 | | - dir = pgd_offset_k(addr); |
---|
384 | | - pmdp = pmd_offset(dir, addr); |
---|
385 | | - ptep = pte_offset_kernel(pmdp, addr); |
---|
386 | | - *ptep = pte_mkcache(*ptep); |
---|
387 | | -} |
---|
388 | 312 | |
---|
389 | 313 | /* |
---|
390 | 314 | * Encode and de-code a swap entry (must be !pte_none(e) && !pte_present(e)) |
---|
.. | .. |
---|
398 | 322 | |
---|
399 | 323 | #define pmd_page(pmd) (pfn_to_page(pmd_val(pmd) >> PAGE_SHIFT)) |
---|
400 | 324 | |
---|
401 | | -#define pte_offset_map(pmdp, addr) ((pte_t *)__pmd_page(*pmdp) + \ |
---|
402 | | - __pte_offset(addr)) |
---|
403 | | -#define pte_unmap(pte) ((void) 0) |
---|
404 | 325 | #define pfn_pte(pfn, prot) __pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot)) |
---|
405 | 326 | #define pte_pfn(pte) (pte_val(pte) >> PAGE_SHIFT) |
---|
406 | 327 | |
---|