Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions | Variables
pgtable.h File Reference
#include <asm-generic/pgtable-nopmd.h>
#include <asm/cpu-single.h>
#include <asm/memory.h>
#include <asm/pgtable-hwdef.h>
#include <asm-generic/pgtable.h>

Go to the source code of this file.

Macros

#define VMALLOC_OFFSET   SZ_8M
 
#define VMALLOC_START
 
#define VMALLOC_END   (0xff000000UL)
 
#define PTRS_PER_PTE   1024
 
#define PTRS_PER_PGD   1024
 
#define PGDIR_SHIFT   22
 
#define pte_ERROR(pte)   __pte_error(__FILE__, __LINE__, pte_val(pte))
 
#define pgd_ERROR(pgd)   __pgd_error(__FILE__, __LINE__, pgd_val(pgd))
 
#define PGDIR_SIZE   (1UL << PGDIR_SHIFT)
 
#define PGDIR_MASK   (~(PGDIR_SIZE-1))
 
#define FIRST_USER_ADDRESS   PAGE_SIZE
 
#define FIRST_USER_PGD_NR   1
 
#define USER_PTRS_PER_PGD   ((TASK_SIZE/PGDIR_SIZE) - FIRST_USER_PGD_NR)
 
#define SECTION_SHIFT   22
 
#define SECTION_SIZE   (1UL << SECTION_SHIFT)
 
#define SECTION_MASK   (~(SECTION_SIZE-1))
 
#define _PTE_DEFAULT   (PTE_PRESENT | PTE_YOUNG | PTE_CACHEABLE)
 
#define PAGE_NONE   pgprot_user
 
#define PAGE_SHARED
 
#define PAGE_SHARED_EXEC
 
#define PAGE_COPY   __pgprot(pgprot_val(pgprot_user | PTE_READ)
 
#define PAGE_COPY_EXEC
 
#define PAGE_READONLY   __pgprot(pgprot_val(pgprot_user | PTE_READ)
 
#define PAGE_READONLY_EXEC
 
#define PAGE_KERNEL   pgprot_kernel
 
#define PAGE_KERNEL_EXEC   __pgprot(pgprot_val(pgprot_kernel | PTE_EXEC))
 
#define __PAGE_NONE   __pgprot(_PTE_DEFAULT)
 
#define __PAGE_SHARED
 
#define __PAGE_SHARED_EXEC
 
#define __PAGE_COPY   __pgprot(_PTE_DEFAULT | PTE_READ)
 
#define __PAGE_COPY_EXEC
 
#define __PAGE_READONLY   __pgprot(_PTE_DEFAULT | PTE_READ)
 
#define __PAGE_READONLY_EXEC
 
#define __P000   __PAGE_NONE
 
#define __P001   __PAGE_READONLY
 
#define __P010   __PAGE_COPY
 
#define __P011   __PAGE_COPY
 
#define __P100   __PAGE_READONLY_EXEC
 
#define __P101   __PAGE_READONLY_EXEC
 
#define __P110   __PAGE_COPY_EXEC
 
#define __P111   __PAGE_COPY_EXEC
 
#define __S000   __PAGE_NONE
 
#define __S001   __PAGE_READONLY
 
#define __S010   __PAGE_SHARED
 
#define __S011   __PAGE_SHARED
 
#define __S100   __PAGE_READONLY_EXEC
 
#define __S101   __PAGE_READONLY_EXEC
 
#define __S110   __PAGE_SHARED_EXEC
 
#define __S111   __PAGE_SHARED_EXEC
 
#define ZERO_PAGE(vaddr)   (empty_zero_page)
 
#define pte_pfn(pte)   (pte_val(pte) >> PAGE_SHIFT)
 
#define pfn_pte(pfn, prot)
 
#define pte_none(pte)   (!pte_val(pte))
 
#define pte_clear(mm, addr, ptep)   set_pte(ptep, __pte(0))
 
#define pte_page(pte)   (pfn_to_page(pte_pfn(pte)))
 
#define pte_offset_kernel(dir, addr)
 
#define pte_offset_map(dir, addr)
 
#define pte_unmap(pte)   do { } while (0)
 
#define set_pte(ptep, pte)   cpu_set_pte(ptep, pte)
 
#define set_pte_at(mm, addr, ptep, pteval)
 
#define pte_present(pte)   (pte_val(pte) & PTE_PRESENT)
 
#define pte_write(pte)   (pte_val(pte) & PTE_WRITE)
 
#define pte_dirty(pte)   (pte_val(pte) & PTE_DIRTY)
 
#define pte_young(pte)   (pte_val(pte) & PTE_YOUNG)
 
#define pte_exec(pte)   (pte_val(pte) & PTE_EXEC)
 
#define pte_special(pte)   (0)
 
#define PTE_BIT_FUNC(fn, op)   static inline pte_t pte_##fn(pte_t pte) { pte_val(pte) op; return pte; }
 
#define pgprot_noncached(prot)   __pgprot(pgprot_val(prot) & ~PTE_CACHEABLE)
 
#define pgprot_writecombine(prot)   __pgprot(pgprot_val(prot) & ~PTE_CACHEABLE)
 
#define pgprot_dmacoherent(prot)   __pgprot(pgprot_val(prot) & ~PTE_CACHEABLE)
 
#define pmd_none(pmd)   (!pmd_val(pmd))
 
#define pmd_present(pmd)   (pmd_val(pmd) & PMD_PRESENT)
 
#define pmd_bad(pmd)
 
#define set_pmd(pmdpd, pmdval)
 
#define pmd_clear(pmdp)
 
#define pmd_page_vaddr(pmd)   ((pte_t *)__va(pmd_val(pmd) & PAGE_MASK))
 
#define pmd_page(pmd)   pfn_to_page(__phys_to_pfn(pmd_val(pmd)))
 
#define mk_pte(page, prot)   pfn_pte(page_to_pfn(page), prot)
 
#define pgd_index(addr)   ((addr) >> PGDIR_SHIFT)
 
#define pgd_offset(mm, addr)   ((mm)->pgd+pgd_index(addr))
 
#define pgd_offset_k(addr)   pgd_offset(&init_mm, addr)
 
#define __pte_index(addr)   (((addr) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
 
#define __SWP_TYPE_SHIFT   5
 
#define __SWP_TYPE_BITS   7
 
#define __SWP_TYPE_MASK   ((1 << __SWP_TYPE_BITS) - 1)
 
#define __SWP_OFFSET_SHIFT   (__SWP_TYPE_BITS + __SWP_TYPE_SHIFT)
 
#define __swp_type(x)
 
#define __swp_offset(x)   ((x).val >> __SWP_OFFSET_SHIFT)
 
#define __swp_entry(type, offset)
 
#define __pte_to_swp_entry(pte)   ((swp_entry_t) { pte_val(pte) })
 
#define __swp_entry_to_pte(swp)   ((pte_t) { (swp).val })
 
#define MAX_SWAPFILES_CHECK()   BUILD_BUG_ON(MAX_SWAPFILES_SHIFT > __SWP_TYPE_BITS)
 
#define pte_file(pte)   (pte_val(pte) & PTE_FILE)
 
#define pte_to_pgoff(x)   (pte_val(x) >> 4)
 
#define pgoff_to_pte(x)   __pte(((x) << 4) | PTE_FILE)
 
#define PTE_FILE_MAX_BITS   28
 
#define kern_addr_valid(addr)   (1)
 
#define io_remap_pfn_range(vma, from, pfn, size, prot)   remap_pfn_range(vma, from, pfn, size, prot)
 
#define pgtable_cache_init()   do { } while (0)
 

Functions

void __pte_error (const char *file, int line, unsigned long val)
 
void __pgd_error (const char *file, int line, unsigned long val)
 
 PTE_BIT_FUNC (wrprotect,&=~PTE_WRITE)
 
 PTE_BIT_FUNC (mkwrite,|=PTE_WRITE)
 
 PTE_BIT_FUNC (mkclean,&=~PTE_DIRTY)
 
 PTE_BIT_FUNC (mkdirty,|=PTE_DIRTY)
 
 PTE_BIT_FUNC (mkold,&=~PTE_YOUNG)
 
 PTE_BIT_FUNC (mkyoung,|=PTE_YOUNG)
 

Variables

pgprot_t pgprot_user
 
pgprot_t pgprot_kernel
 
struct pageempty_zero_page
 
pgd_t swapper_pg_dir [PTRS_PER_PGD]
 

Macro Definition Documentation

#define __P000   __PAGE_NONE

Definition at line 126 of file pgtable.h.

#define __P001   __PAGE_READONLY

Definition at line 127 of file pgtable.h.

#define __P010   __PAGE_COPY

Definition at line 128 of file pgtable.h.

#define __P011   __PAGE_COPY

Definition at line 129 of file pgtable.h.

#define __P100   __PAGE_READONLY_EXEC

Definition at line 130 of file pgtable.h.

#define __P101   __PAGE_READONLY_EXEC

Definition at line 131 of file pgtable.h.

#define __P110   __PAGE_COPY_EXEC

Definition at line 132 of file pgtable.h.

#define __P111   __PAGE_COPY_EXEC

Definition at line 133 of file pgtable.h.

#define __PAGE_COPY   __pgprot(_PTE_DEFAULT | PTE_READ)

Definition at line 109 of file pgtable.h.

#define __PAGE_COPY_EXEC
Value:

Definition at line 110 of file pgtable.h.

#define __PAGE_NONE   __pgprot(_PTE_DEFAULT)

Definition at line 103 of file pgtable.h.

#define __PAGE_READONLY   __pgprot(_PTE_DEFAULT | PTE_READ)

Definition at line 112 of file pgtable.h.

#define __PAGE_READONLY_EXEC
Value:

Definition at line 113 of file pgtable.h.

#define __PAGE_SHARED
Value:

Definition at line 104 of file pgtable.h.

#define __PAGE_SHARED_EXEC
Value:

Definition at line 106 of file pgtable.h.

#define __pte_index (   addr)    (((addr) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))

Definition at line 241 of file pgtable.h.

#define __pte_to_swp_entry (   pte)    ((swp_entry_t) { pte_val(pte) })

Definition at line 275 of file pgtable.h.

#define __S000   __PAGE_NONE

Definition at line 135 of file pgtable.h.

#define __S001   __PAGE_READONLY

Definition at line 136 of file pgtable.h.

#define __S010   __PAGE_SHARED

Definition at line 137 of file pgtable.h.

#define __S011   __PAGE_SHARED

Definition at line 138 of file pgtable.h.

#define __S100   __PAGE_READONLY_EXEC

Definition at line 139 of file pgtable.h.

#define __S101   __PAGE_READONLY_EXEC

Definition at line 140 of file pgtable.h.

#define __S110   __PAGE_SHARED_EXEC

Definition at line 141 of file pgtable.h.

#define __S111   __PAGE_SHARED_EXEC

Definition at line 142 of file pgtable.h.

#define __swp_entry (   type,
  offset 
)
Value:

Definition at line 271 of file pgtable.h.

#define __swp_entry_to_pte (   swp)    ((pte_t) { (swp).val })

Definition at line 276 of file pgtable.h.

#define __swp_offset (   x)    ((x).val >> __SWP_OFFSET_SHIFT)

Definition at line 270 of file pgtable.h.

#define __SWP_OFFSET_SHIFT   (__SWP_TYPE_BITS + __SWP_TYPE_SHIFT)

Definition at line 266 of file pgtable.h.

#define __swp_type (   x)
Value:

Definition at line 268 of file pgtable.h.

#define __SWP_TYPE_BITS   7

Definition at line 264 of file pgtable.h.

#define __SWP_TYPE_MASK   ((1 << __SWP_TYPE_BITS) - 1)

Definition at line 265 of file pgtable.h.

#define __SWP_TYPE_SHIFT   5

Definition at line 263 of file pgtable.h.

#define _PTE_DEFAULT   (PTE_PRESENT | PTE_YOUNG | PTE_CACHEABLE)

Definition at line 83 of file pgtable.h.

#define FIRST_USER_ADDRESS   PAGE_SIZE

Definition at line 64 of file pgtable.h.

#define FIRST_USER_PGD_NR   1

Definition at line 66 of file pgtable.h.

#define io_remap_pfn_range (   vma,
  from,
  pfn,
  size,
  prot 
)    remap_pfn_range(vma, from, pfn, size, prot)

Definition at line 310 of file pgtable.h.

#define kern_addr_valid (   addr)    (1)

Definition at line 302 of file pgtable.h.

#define MAX_SWAPFILES_CHECK ( )    BUILD_BUG_ON(MAX_SWAPFILES_SHIFT > __SWP_TYPE_BITS)

Definition at line 283 of file pgtable.h.

#define mk_pte (   page,
  prot 
)    pfn_pte(page_to_pfn(page), prot)

Definition at line 230 of file pgtable.h.

#define PAGE_COPY   __pgprot(pgprot_val(pgprot_user | PTE_READ)

Definition at line 94 of file pgtable.h.

#define PAGE_COPY_EXEC
Value:

Definition at line 95 of file pgtable.h.

#define PAGE_KERNEL   pgprot_kernel

Definition at line 100 of file pgtable.h.

#define PAGE_KERNEL_EXEC   __pgprot(pgprot_val(pgprot_kernel | PTE_EXEC))

Definition at line 101 of file pgtable.h.

#define PAGE_NONE   pgprot_user

Definition at line 88 of file pgtable.h.

#define PAGE_READONLY   __pgprot(pgprot_val(pgprot_user | PTE_READ)

Definition at line 97 of file pgtable.h.

#define PAGE_READONLY_EXEC
Value:

Definition at line 98 of file pgtable.h.

#define PAGE_SHARED
Value:

Definition at line 89 of file pgtable.h.

#define PAGE_SHARED_EXEC
Value:

Definition at line 91 of file pgtable.h.

#define pfn_pte (   pfn,
  prot 
)
Value:
(__pte(((pfn) << PAGE_SHIFT) \
| pgprot_val(prot)))

Definition at line 153 of file pgtable.h.

#define pgd_ERROR (   pgd)    __pgd_error(__FILE__, __LINE__, pgd_val(pgd))

Definition at line 53 of file pgtable.h.

#define pgd_index (   addr)    ((addr) >> PGDIR_SHIFT)

Definition at line 233 of file pgtable.h.

#define pgd_offset (   mm,
  addr 
)    ((mm)->pgd+pgd_index(addr))

Definition at line 235 of file pgtable.h.

#define pgd_offset_k (   addr)    pgd_offset(&init_mm, addr)

Definition at line 238 of file pgtable.h.

#define PGDIR_MASK   (~(PGDIR_SIZE-1))

Definition at line 57 of file pgtable.h.

#define PGDIR_SHIFT   22

Definition at line 46 of file pgtable.h.

#define PGDIR_SIZE   (1UL << PGDIR_SHIFT)

Definition at line 56 of file pgtable.h.

#define pgoff_to_pte (   x)    __pte(((x) << 4) | PTE_FILE)

Definition at line 296 of file pgtable.h.

#define pgprot_dmacoherent (   prot)    __pgprot(pgprot_val(prot) & ~PTE_CACHEABLE)

Definition at line 203 of file pgtable.h.

#define pgprot_noncached (   prot)    __pgprot(pgprot_val(prot) & ~PTE_CACHEABLE)

Definition at line 199 of file pgtable.h.

#define pgprot_writecombine (   prot)    __pgprot(pgprot_val(prot) & ~PTE_CACHEABLE)

Definition at line 201 of file pgtable.h.

#define pgtable_cache_init (   void)    do { } while (0)

Definition at line 313 of file pgtable.h.

#define pmd_bad (   pmd)
Value:

Definition at line 208 of file pgtable.h.

#define pmd_clear (   pmdp)
Value:
do { \
set_pmd(pmdp, __pmd(0));\
clean_pmd_entry(pmdp); \
} while (0)

Definition at line 217 of file pgtable.h.

#define pmd_none (   pmd)    (!pmd_val(pmd))

Definition at line 206 of file pgtable.h.

#define pmd_page (   pmd)    pfn_to_page(__phys_to_pfn(pmd_val(pmd)))

Definition at line 224 of file pgtable.h.

#define pmd_page_vaddr (   pmd)    ((pte_t *)__va(pmd_val(pmd) & PAGE_MASK))

Definition at line 223 of file pgtable.h.

#define pmd_present (   pmd)    (pmd_val(pmd) & PMD_PRESENT)

Definition at line 207 of file pgtable.h.

#define PTE_BIT_FUNC (   fn,
  op 
)    static inline pte_t pte_##fn(pte_t pte) { pte_val(pte) op; return pte; }

Definition at line 184 of file pgtable.h.

#define pte_clear (   mm,
  addr,
  ptep 
)    set_pte(ptep, __pte(0))

Definition at line 157 of file pgtable.h.

#define pte_dirty (   pte)    (pte_val(pte) & PTE_DIRTY)

Definition at line 179 of file pgtable.h.

#define pte_ERROR (   pte)    __pte_error(__FILE__, __LINE__, pte_val(pte))

Definition at line 52 of file pgtable.h.

#define pte_exec (   pte)    (pte_val(pte) & PTE_EXEC)

Definition at line 181 of file pgtable.h.

#define pte_file (   pte)    (pte_val(pte) & PTE_FILE)

Definition at line 294 of file pgtable.h.

#define PTE_FILE_MAX_BITS   28

Definition at line 298 of file pgtable.h.

#define pte_none (   pte)    (!pte_val(pte))

Definition at line 156 of file pgtable.h.

#define pte_offset_kernel (   dir,
  addr 
)
Value:

Definition at line 159 of file pgtable.h.

#define pte_offset_map (   dir,
  addr 
)
Value:

Definition at line 162 of file pgtable.h.

#define pte_page (   pte)    (pfn_to_page(pte_pfn(pte)))

Definition at line 158 of file pgtable.h.

#define pte_pfn (   pte)    (pte_val(pte) >> PAGE_SHIFT)

Definition at line 152 of file pgtable.h.

#define pte_present (   pte)    (pte_val(pte) & PTE_PRESENT)

Definition at line 177 of file pgtable.h.

#define pte_special (   pte)    (0)

Definition at line 182 of file pgtable.h.

#define pte_to_pgoff (   x)    (pte_val(x) >> 4)

Definition at line 295 of file pgtable.h.

#define pte_unmap (   pte)    do { } while (0)

Definition at line 164 of file pgtable.h.

#define pte_write (   pte)    (pte_val(pte) & PTE_WRITE)

Definition at line 178 of file pgtable.h.

#define pte_young (   pte)    (pte_val(pte) & PTE_YOUNG)

Definition at line 180 of file pgtable.h.

#define PTRS_PER_PGD   1024

Definition at line 41 of file pgtable.h.

#define PTRS_PER_PTE   1024

Definition at line 40 of file pgtable.h.

#define SECTION_MASK   (~(SECTION_SIZE-1))

Definition at line 74 of file pgtable.h.

#define SECTION_SHIFT   22

Definition at line 72 of file pgtable.h.

#define SECTION_SIZE   (1UL << SECTION_SHIFT)

Definition at line 73 of file pgtable.h.

#define set_pmd (   pmdpd,
  pmdval 
)
Value:
do { \
*(pmdpd) = pmdval; \
} while (0)

Definition at line 212 of file pgtable.h.

#define set_pte (   ptep,
  pte 
)    cpu_set_pte(ptep, pte)

Definition at line 166 of file pgtable.h.

#define set_pte_at (   mm,
  addr,
  ptep,
  pteval 
)
Value:
do { \
set_pte(ptep, pteval); \
} while (0)

Definition at line 168 of file pgtable.h.

#define USER_PTRS_PER_PGD   ((TASK_SIZE/PGDIR_SIZE) - FIRST_USER_PGD_NR)

Definition at line 67 of file pgtable.h.

#define VMALLOC_END   (0xff000000UL)

Definition at line 37 of file pgtable.h.

#define VMALLOC_OFFSET   SZ_8M

Definition at line 34 of file pgtable.h.

#define VMALLOC_START
Value:
(((unsigned long)high_memory + VMALLOC_OFFSET) \

Definition at line 35 of file pgtable.h.

#define ZERO_PAGE (   vaddr)    (empty_zero_page)

Definition at line 150 of file pgtable.h.

Function Documentation

void __pgd_error ( const char file,
int  line,
unsigned long  val 
)

Definition at line 340 of file traps.c.

void __pte_error ( const char file,
int  line,
unsigned long  val 
)

Definition at line 330 of file traps.c.

PTE_BIT_FUNC ( wrprotect  ,
= ~PTE_WRITE 
)
PTE_BIT_FUNC ( mkwrite  ,
= PTE_WRITE 
)
PTE_BIT_FUNC ( mkclean  ,
= ~PTE_DIRTY 
)
PTE_BIT_FUNC ( mkdirty  ,
= PTE_DIRTY 
)
PTE_BIT_FUNC ( mkold  ,
= ~PTE_YOUNG 
)
PTE_BIT_FUNC ( mkyoung  ,
= PTE_YOUNG 
)

Variable Documentation

struct page* empty_zero_page

Definition at line 42 of file mmu.c.

pgprot_t pgprot_kernel

Definition at line 59 of file mmu.c.

pgprot_t pgprot_user

Definition at line 58 of file mmu.c.

pgd_t swapper_pg_dir[PTRS_PER_PGD]

Definition at line 36 of file init.c.