~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/asm-sh/pgtable-2level.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #ifndef __ASM_SH_PGTABLE_2LEVEL_H
  2 #define __ASM_SH_PGTABLE_2LEVEL_H
  3 
  4 /*
  5  * traditional two-level paging structure:
  6  */
  7 
  8 #define PGDIR_SHIFT     22
  9 #define PTRS_PER_PGD    1024
 10 
 11 /*
 12  * this is two-level, so we don't really have any
 13  * PMD directory physically.
 14  */
 15 #define PMD_SHIFT       22
 16 #define PTRS_PER_PMD    1
 17 
 18 #define PTRS_PER_PTE    1024
 19 
 20 #define pte_ERROR(e) \
 21         printk("%s:%d: bad pte %08lx.\n", __FILE__, __LINE__, pte_val(e))
 22 #define pmd_ERROR(e) \
 23         printk("%s:%d: bad pmd %08lx.\n", __FILE__, __LINE__, pmd_val(e))
 24 #define pgd_ERROR(e) \
 25         printk("%s:%d: bad pgd %08lx.\n", __FILE__, __LINE__, pgd_val(e))
 26 
 27 /*
 28  * The "pgd_xxx()" functions here are trivial for a folded two-level
 29  * setup: the pgd is never bad, and a pmd always exists (as it's folded
 30  * into the pgd entry)
 31  */
 32 static inline int pgd_none(pgd_t pgd)           { return 0; }
 33 static inline int pgd_bad(pgd_t pgd)            { return 0; }
 34 static inline int pgd_present(pgd_t pgd)        { return 1; }
 35 #define pgd_clear(xp)   do { } while (0)
 36 
 37 /*
 38  * Certain architectures need to do special things when PTEs
 39  * within a page table are directly modified.  Thus, the following
 40  * hook is made available.
 41  */
 42 #define set_pte(pteptr, pteval) (*(pteptr) = pteval)
 43 /*
 44  * (pmds are folded into pgds so this doesnt get actually called,
 45  * but the define is needed for a generic inline function.)
 46  */
 47 #define set_pmd(pmdptr, pmdval) (*(pmdptr) = pmdval)
 48 #define set_pgd(pgdptr, pgdval) (*(pgdptr) = pgdval)
 49 
 50 #define pgd_page(pgd) \
 51 ((unsigned long) __va(pgd_val(pgd) & PAGE_MASK))
 52 
 53 static inline pmd_t * pmd_offset(pgd_t * dir, unsigned long address)
 54 {
 55         return (pmd_t *) dir;
 56 }
 57 
 58 #endif /* __ASM_SH_PGTABLE_2LEVEL_H */
 59 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.