linux/include/asm-sh/pgtable-2level.h
<<
>>
Prefs
   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#ifndef __ASSEMBLY__
  21#define pte_ERROR(e) \
  22        printk("%s:%d: bad pte %08lx.\n", __FILE__, __LINE__, pte_val(e))
  23#define pmd_ERROR(e) \
  24        printk("%s:%d: bad pmd %08lx.\n", __FILE__, __LINE__, pmd_val(e))
  25#define pgd_ERROR(e) \
  26        printk("%s:%d: bad pgd %08lx.\n", __FILE__, __LINE__, pgd_val(e))
  27
  28/*
  29 * The "pgd_xxx()" functions here are trivial for a folded two-level
  30 * setup: the pgd is never bad, and a pmd always exists (as it's folded
  31 * into the pgd entry)
  32 */
  33static inline int pgd_none(pgd_t pgd)           { return 0; }
  34static inline int pgd_bad(pgd_t pgd)            { return 0; }
  35static inline int pgd_present(pgd_t pgd)        { return 1; }
  36static inline void pgd_clear (pgd_t * pgdp)     { }
  37
  38/*
  39 * Certain architectures need to do special things when PTEs
  40 * within a page table are directly modified.  Thus, the following
  41 * hook is made available.
  42 */
  43#define set_pte(pteptr, pteval) (*(pteptr) = pteval)
  44/*
  45 * (pmds are folded into pgds so this doesn't get actually called,
  46 * but the define is needed for a generic inline function.)
  47 */
  48#define set_pmd(pmdptr, pmdval) (*(pmdptr) = pmdval)
  49#define set_pgd(pgdptr, pgdval) (*(pgdptr) = pgdval)
  50
  51#define pgd_page(pgd) \
  52((unsigned long) __va(pgd_val(pgd) & PAGE_MASK))
  53
  54static inline pmd_t * pmd_offset(pgd_t * dir, unsigned long address)
  55{
  56        return (pmd_t *) dir;
  57}
  58
  59#define pte_pfn(x)              ((unsigned long)(((x).pte >> PAGE_SHIFT)))
  60#define pfn_pte(pfn, prot)      __pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))
  61#define pfn_pmd(pfn, prot)      __pmd(((pfn) << PAGE_SHIFT) | pgprot_val(prot))
  62
  63#endif /* !__ASSEMBLY__ */
  64
  65#endif /* __ASM_SH_PGTABLE_2LEVEL_H */
  66
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.