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

Go to the source code of this file.

Macros

#define set_pte(pteptr, pteval)   ((*(pteptr)) = (pteval))
 
#define set_pte_at(mm, addr, ptep, pteval)   set_pte(ptep, pteval)
 
#define set_pmd(pmdptr, pmdval)   (*(pmdptr) = pmdval)
 
#define PGDIR_SHIFT   (PAGE_SHIFT + (PAGE_SHIFT-2))
 
#define PGDIR_SIZE   (1UL << PGDIR_SHIFT)
 
#define PGDIR_MASK   (~(PGDIR_SIZE-1))
 
#define PTRS_PER_PTE   (1UL << (PAGE_SHIFT-2))
 
#define PTRS_PER_PGD   (1UL << (PAGE_SHIFT-2))
 
#define USER_PTRS_PER_PGD   (TASK_SIZE/PGDIR_SIZE)
 
#define FIRST_USER_ADDRESS   0
 
#define VMALLOC_START   (PAGE_OFFSET-0x04000000)
 
#define VMALLOC_END   (PAGE_OFFSET)
 
#define VMALLOC_VMADDR(x)   ((unsigned long)(x))
 
#define _PAGE_CC   0x001 /* software: pte contains a translation */
 
#define _PAGE_CI   0x002 /* cache inhibit */
 
#define _PAGE_WBC   0x004 /* write back cache */
 
#define _PAGE_FILE   0x004 /* set: pagecache, unset: swap (when !PRESENT) */
 
#define _PAGE_WOM   0x008 /* weakly ordered memory */
 
#define _PAGE_A   0x010 /* accessed */
 
#define _PAGE_D   0x020 /* dirty */
 
#define _PAGE_URE   0x040 /* user read enable */
 
#define _PAGE_UWE   0x080 /* user write enable */
 
#define _PAGE_SRE   0x100 /* superuser read enable */
 
#define _PAGE_SWE   0x200 /* superuser write enable */
 
#define _PAGE_EXEC   0x400 /* software: page is executable */
 
#define _PAGE_U_SHARED   0x800 /* software: page is shared in user space */
 
#define _PAGE_PRESENT   _PAGE_CC
 
#define _PAGE_USER   _PAGE_URE
 
#define _PAGE_WRITE   (_PAGE_UWE | _PAGE_SWE)
 
#define _PAGE_DIRTY   _PAGE_D
 
#define _PAGE_ACCESSED   _PAGE_A
 
#define _PAGE_NO_CACHE   _PAGE_CI
 
#define _PAGE_SHARED   _PAGE_U_SHARED
 
#define _PAGE_READ   (_PAGE_URE | _PAGE_SRE)
 
#define _PAGE_CHG_MASK   (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY)
 
#define _PAGE_BASE   (_PAGE_PRESENT | _PAGE_ACCESSED)
 
#define _PAGE_ALL   (_PAGE_PRESENT | _PAGE_ACCESSED)
 
#define _KERNPG_TABLE   (_PAGE_BASE | _PAGE_SRE | _PAGE_SWE | _PAGE_ACCESSED | _PAGE_DIRTY)
 
#define PAGE_NONE   __pgprot(_PAGE_ALL)
 
#define PAGE_READONLY   __pgprot(_PAGE_ALL | _PAGE_URE | _PAGE_SRE)
 
#define PAGE_READONLY_X   __pgprot(_PAGE_ALL | _PAGE_URE | _PAGE_SRE | _PAGE_EXEC)
 
#define PAGE_SHARED
 
#define PAGE_SHARED_X
 
#define PAGE_COPY   __pgprot(_PAGE_ALL | _PAGE_URE | _PAGE_SRE)
 
#define PAGE_COPY_X   __pgprot(_PAGE_ALL | _PAGE_URE | _PAGE_SRE | _PAGE_EXEC)
 
#define PAGE_KERNEL
 
#define PAGE_KERNEL_RO
 
#define PAGE_KERNEL_NOCACHE
 
#define __P000   PAGE_NONE
 
#define __P001   PAGE_READONLY_X
 
#define __P010   PAGE_COPY
 
#define __P011   PAGE_COPY_X
 
#define __P100   PAGE_READONLY
 
#define __P101   PAGE_READONLY_X
 
#define __P110   PAGE_COPY
 
#define __P111   PAGE_COPY_X
 
#define __S000   PAGE_NONE
 
#define __S001   PAGE_READONLY_X
 
#define __S010   PAGE_SHARED
 
#define __S011   PAGE_SHARED_X
 
#define __S100   PAGE_READONLY
 
#define __S101   PAGE_READONLY_X
 
#define __S110   PAGE_SHARED
 
#define __S111   PAGE_SHARED_X
 
#define ZERO_PAGE(vaddr)   (virt_to_page(empty_zero_page))
 
#define BITS_PER_PTR   (8*sizeof(unsigned long))
 
#define PTR_MASK   (~(sizeof(void *)-1))
 
#define SIZEOF_PTR_LOG2   2
 
#define PAGE_PTR(address)   ((unsigned long)(address)>>(PAGE_SHIFT-SIZEOF_PTR_LOG2)&PTR_MASK&~PAGE_MASK)
 
#define SET_PAGE_DIR(tsk, pgdir)
 
#define pte_none(x)   (!pte_val(x))
 
#define pte_present(x)   (pte_val(x) & _PAGE_PRESENT)
 
#define pte_clear(mm, addr, xp)   do { pte_val(*(xp)) = 0; } while (0)
 
#define pmd_none(x)   (!pmd_val(x))
 
#define pmd_bad(x)   ((pmd_val(x) & (~PAGE_MASK)) != _KERNPG_TABLE)
 
#define pmd_present(x)   (pmd_val(x) & _PAGE_PRESENT)
 
#define pmd_clear(xp)   do { pmd_val(*(xp)) = 0; } while (0)
 
#define mk_pte(page, pgprot)   __mk_pte(page_address(page), (pgprot))
 
#define mk_pte_phys(physpage, pgprot)
 
#define pte_pagenr(pte)   ((__pte_page(pte) - PAGE_OFFSET) >> PAGE_SHIFT)
 
#define __page_address(page)   (PAGE_OFFSET + (((page) - mem_map) << PAGE_SHIFT))
 
#define pte_page(pte)   (mem_map+pte_pagenr(pte))
 
#define pmd_page(pmd)   (pfn_to_page(pmd_val(pmd) >> PAGE_SHIFT))
 
#define pmd_page_kernel(pmd)   ((unsigned long) __va(pmd_val(pmd) & PAGE_MASK))
 
#define pgd_index(address)   ((address >> PGDIR_SHIFT) & (PTRS_PER_PGD-1))
 
#define __pgd_offset(address)   pgd_index(address)
 
#define pgd_offset(mm, address)   ((mm)->pgd+pgd_index(address))
 
#define pgd_offset_k(address)   pgd_offset(&init_mm, address)
 
#define __pmd_offset(address)   (((address) >> PMD_SHIFT) & (PTRS_PER_PMD-1))
 
#define __pte_offset(address)   (((address) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
 
#define pte_offset_kernel(dir, address)   ((pte_t *) pmd_page_kernel(*(dir)) + __pte_offset(address))
 
#define pte_offset_map(dir, address)   ((pte_t *)page_address(pmd_page(*(dir))) + __pte_offset(address))
 
#define pte_offset_map_nested(dir, address)   pte_offset_map(dir, address)
 
#define pte_unmap(pte)   do { } while (0)
 
#define pte_unmap_nested(pte)   do { } while (0)
 
#define pte_pfn(x)   ((unsigned long)(((x).pte)) >> PAGE_SHIFT)
 
#define pfn_pte(pfn, prot)   __pte((((pfn) << PAGE_SHIFT)) | pgprot_val(prot))
 
#define pte_ERROR(e)
 
#define pgd_ERROR(e)
 
#define __swp_type(x)   (((x).val >> 5) & 0x7f)
 
#define __swp_offset(x)   ((x).val >> 12)
 
#define __swp_entry(type, offset)   ((swp_entry_t) { ((type) << 5) | ((offset) << 12) })
 
#define __pte_to_swp_entry(pte)   ((swp_entry_t) { pte_val(pte) })
 
#define __swp_entry_to_pte(x)   ((pte_t) { (x).val })
 
#define PTE_FILE_MAX_BITS   26
 
#define pte_to_pgoff(x)   (pte_val(x) >> 6)
 
#define pgoff_to_pte(x)   __pte(((x) << 6) | _PAGE_FILE)
 
#define kern_addr_valid(addr)   (1)
 
#define io_remap_pfn_range(vma, vaddr, pfn, size, prot)   remap_pfn_range(vma, vaddr, pfn, size, prot)
 
#define pgtable_cache_init()   do { } while (0)
 

Typedefs

typedef pte_tpte_addr_t
 

Functions

void paging_init (void)
 

Variables

unsigned long empty_zero_page [2048]
 
pgd_t swapper_pg_dir [PTRS_PER_PGD]
 

Macro Definition Documentation

#define __P000   PAGE_NONE

Definition at line 185 of file pgtable.h.

#define __P001   PAGE_READONLY_X

Definition at line 186 of file pgtable.h.

#define __P010   PAGE_COPY

Definition at line 187 of file pgtable.h.

#define __P011   PAGE_COPY_X

Definition at line 188 of file pgtable.h.

#define __P100   PAGE_READONLY

Definition at line 189 of file pgtable.h.

#define __P101   PAGE_READONLY_X

Definition at line 190 of file pgtable.h.

#define __P110   PAGE_COPY

Definition at line 191 of file pgtable.h.

#define __P111   PAGE_COPY_X

Definition at line 192 of file pgtable.h.

#define __page_address (   page)    (PAGE_OFFSET + (((page) - mem_map) << PAGE_SHIFT))

Definition at line 360 of file pgtable.h.

#define __pgd_offset (   address)    pgd_index(address)

Definition at line 379 of file pgtable.h.

#define __pmd_offset (   address)    (((address) >> PMD_SHIFT) & (PTRS_PER_PMD-1))

Definition at line 386 of file pgtable.h.

#define __pte_offset (   address)    (((address) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))

Definition at line 395 of file pgtable.h.

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

Definition at line 438 of file pgtable.h.

#define __S000   PAGE_NONE

Definition at line 194 of file pgtable.h.

#define __S001   PAGE_READONLY_X

Definition at line 195 of file pgtable.h.

#define __S010   PAGE_SHARED

Definition at line 196 of file pgtable.h.

#define __S011   PAGE_SHARED_X

Definition at line 197 of file pgtable.h.

#define __S100   PAGE_READONLY

Definition at line 198 of file pgtable.h.

#define __S101   PAGE_READONLY_X

Definition at line 199 of file pgtable.h.

#define __S110   PAGE_SHARED

Definition at line 200 of file pgtable.h.

#define __S111   PAGE_SHARED_X

Definition at line 201 of file pgtable.h.

#define __swp_entry (   type,
  offset 
)    ((swp_entry_t) { ((type) << 5) | ((offset) << 12) })

Definition at line 436 of file pgtable.h.

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

Definition at line 439 of file pgtable.h.

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

Definition at line 435 of file pgtable.h.

#define __swp_type (   x)    (((x).val >> 5) & 0x7f)

Definition at line 434 of file pgtable.h.

#define _KERNPG_TABLE   (_PAGE_BASE | _PAGE_SRE | _PAGE_SWE | _PAGE_ACCESSED | _PAGE_DIRTY)

Definition at line 160 of file pgtable.h.

#define _PAGE_A   0x010 /* accessed */

Definition at line 131 of file pgtable.h.

#define _PAGE_ACCESSED   _PAGE_A

Definition at line 152 of file pgtable.h.

#define _PAGE_ALL   (_PAGE_PRESENT | _PAGE_ACCESSED)

Definition at line 159 of file pgtable.h.

#define _PAGE_BASE   (_PAGE_PRESENT | _PAGE_ACCESSED)

Definition at line 158 of file pgtable.h.

#define _PAGE_CC   0x001 /* software: pte contains a translation */

Definition at line 125 of file pgtable.h.

#define _PAGE_CHG_MASK   (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY)

Definition at line 157 of file pgtable.h.

#define _PAGE_CI   0x002 /* cache inhibit */

Definition at line 126 of file pgtable.h.

#define _PAGE_D   0x020 /* dirty */

Definition at line 132 of file pgtable.h.

#define _PAGE_DIRTY   _PAGE_D

Definition at line 151 of file pgtable.h.

#define _PAGE_EXEC   0x400 /* software: page is executable */

Definition at line 138 of file pgtable.h.

#define _PAGE_FILE   0x004 /* set: pagecache, unset: swap (when !PRESENT) */

Definition at line 128 of file pgtable.h.

#define _PAGE_NO_CACHE   _PAGE_CI

Definition at line 153 of file pgtable.h.

#define _PAGE_PRESENT   _PAGE_CC

Definition at line 148 of file pgtable.h.

#define _PAGE_READ   (_PAGE_URE | _PAGE_SRE)

Definition at line 155 of file pgtable.h.

#define _PAGE_SHARED   _PAGE_U_SHARED

Definition at line 154 of file pgtable.h.

#define _PAGE_SRE   0x100 /* superuser read enable */

Definition at line 136 of file pgtable.h.

#define _PAGE_SWE   0x200 /* superuser write enable */

Definition at line 137 of file pgtable.h.

#define _PAGE_U_SHARED   0x800 /* software: page is shared in user space */

Definition at line 139 of file pgtable.h.

#define _PAGE_URE   0x040 /* user read enable */

Definition at line 133 of file pgtable.h.

#define _PAGE_USER   _PAGE_URE

Definition at line 149 of file pgtable.h.

#define _PAGE_UWE   0x080 /* user write enable */

Definition at line 134 of file pgtable.h.

#define _PAGE_WBC   0x004 /* write back cache */

Definition at line 127 of file pgtable.h.

#define _PAGE_WOM   0x008 /* weakly ordered memory */

Definition at line 129 of file pgtable.h.

#define _PAGE_WRITE   (_PAGE_UWE | _PAGE_SWE)

Definition at line 150 of file pgtable.h.

#define BITS_PER_PTR   (8*sizeof(unsigned long))

Definition at line 208 of file pgtable.h.

#define FIRST_USER_ADDRESS   0

Definition at line 80 of file pgtable.h.

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

Definition at line 449 of file pgtable.h.

#define kern_addr_valid (   addr)    (1)

Definition at line 447 of file pgtable.h.

#define mk_pte (   page,
  pgprot 
)    __mk_pte(page_address(page), (pgprot))

Definition at line 326 of file pgtable.h.

#define mk_pte_phys (   physpage,
  pgprot 
)
Value:
({ \
pte_val(__pte) = (physpage) + pgprot_val(pgprot); \
__pte; \
})

Definition at line 328 of file pgtable.h.

#define PAGE_COPY   __pgprot(_PAGE_ALL | _PAGE_URE | _PAGE_SRE)

Definition at line 172 of file pgtable.h.

#define PAGE_COPY_X   __pgprot(_PAGE_ALL | _PAGE_URE | _PAGE_SRE | _PAGE_EXEC)

Definition at line 173 of file pgtable.h.

#define PAGE_KERNEL
Value:

Definition at line 175 of file pgtable.h.

#define PAGE_KERNEL_NOCACHE
Value:

Definition at line 181 of file pgtable.h.

#define PAGE_KERNEL_RO
Value:

Definition at line 178 of file pgtable.h.

#define PAGE_NONE   __pgprot(_PAGE_ALL)

Definition at line 163 of file pgtable.h.

#define PAGE_PTR (   address)    ((unsigned long)(address)>>(PAGE_SHIFT-SIZEOF_PTR_LOG2)&PTR_MASK&~PAGE_MASK)

Definition at line 218 of file pgtable.h.

#define PAGE_READONLY   __pgprot(_PAGE_ALL | _PAGE_URE | _PAGE_SRE)

Definition at line 164 of file pgtable.h.

#define PAGE_READONLY_X   __pgprot(_PAGE_ALL | _PAGE_URE | _PAGE_SRE | _PAGE_EXEC)

Definition at line 165 of file pgtable.h.

#define PAGE_SHARED
Value:

Definition at line 166 of file pgtable.h.

#define PAGE_SHARED_X
Value:

Definition at line 169 of file pgtable.h.

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

Definition at line 407 of file pgtable.h.

#define pgd_ERROR (   e)
Value:
printk(KERN_ERR "%s:%d: bad pgd %p(%08lx).\n", \
__FILE__, __LINE__, &(e), pgd_val(e))

Definition at line 412 of file pgtable.h.

#define pgd_index (   address)    ((address >> PGDIR_SHIFT) & (PTRS_PER_PGD-1))

Definition at line 377 of file pgtable.h.

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

Definition at line 381 of file pgtable.h.

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

Definition at line 384 of file pgtable.h.

#define PGDIR_MASK   (~(PGDIR_SIZE-1))

Definition at line 62 of file pgtable.h.

#define PGDIR_SHIFT   (PAGE_SHIFT + (PAGE_SHIFT-2))

Definition at line 60 of file pgtable.h.

#define PGDIR_SIZE   (1UL << PGDIR_SHIFT)

Definition at line 61 of file pgtable.h.

#define pgoff_to_pte (   x)    __pte(((x) << 6) | _PAGE_FILE)

Definition at line 445 of file pgtable.h.

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

Definition at line 457 of file pgtable.h.

#define pmd_bad (   x)    ((pmd_val(x) & (~PAGE_MASK)) != _KERNPG_TABLE)

Definition at line 229 of file pgtable.h.

#define pmd_clear (   xp)    do { pmd_val(*(xp)) = 0; } while (0)

Definition at line 231 of file pgtable.h.

#define pmd_none (   x)    (!pmd_val(x))

Definition at line 228 of file pgtable.h.

#define pmd_page (   pmd)    (pfn_to_page(pmd_val(pmd) >> PAGE_SHIFT))

Definition at line 373 of file pgtable.h.

#define pmd_page_kernel (   pmd)    ((unsigned long) __va(pmd_val(pmd) & PAGE_MASK))

Definition at line 374 of file pgtable.h.

#define pmd_present (   x)    (pmd_val(x) & _PAGE_PRESENT)

Definition at line 230 of file pgtable.h.

#define pte_clear (   mm,
  addr,
  xp 
)    do { pte_val(*(xp)) = 0; } while (0)

Definition at line 226 of file pgtable.h.

#define pte_ERROR (   e)
Value:
printk(KERN_ERR "%s:%d: bad pte %p(%08lx).\n", \
__FILE__, __LINE__, &(e), pte_val(e))

Definition at line 409 of file pgtable.h.

#define PTE_FILE_MAX_BITS   26

Definition at line 443 of file pgtable.h.

#define pte_none (   x)    (!pte_val(x))

Definition at line 224 of file pgtable.h.

#define pte_offset_kernel (   dir,
  address 
)    ((pte_t *) pmd_page_kernel(*(dir)) + __pte_offset(address))

Definition at line 397 of file pgtable.h.

#define pte_offset_map (   dir,
  address 
)    ((pte_t *)page_address(pmd_page(*(dir))) + __pte_offset(address))

Definition at line 399 of file pgtable.h.

#define pte_offset_map_nested (   dir,
  address 
)    pte_offset_map(dir, address)

Definition at line 401 of file pgtable.h.

#define pte_page (   pte)    (mem_map+pte_pagenr(pte))

Definition at line 361 of file pgtable.h.

#define pte_pagenr (   pte)    ((__pte_page(pte) - PAGE_OFFSET) >> PAGE_SHIFT)

Definition at line 356 of file pgtable.h.

#define pte_pfn (   x)    ((unsigned long)(((x).pte)) >> PAGE_SHIFT)

Definition at line 406 of file pgtable.h.

#define pte_present (   x)    (pte_val(x) & _PAGE_PRESENT)

Definition at line 225 of file pgtable.h.

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

Definition at line 444 of file pgtable.h.

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

Definition at line 404 of file pgtable.h.

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

Definition at line 405 of file pgtable.h.

#define PTR_MASK   (~(sizeof(void *)-1))

Definition at line 211 of file pgtable.h.

#define PTRS_PER_PGD   (1UL << (PAGE_SHIFT-2))

Definition at line 72 of file pgtable.h.

#define PTRS_PER_PTE   (1UL << (PAGE_SHIFT-2))

Definition at line 70 of file pgtable.h.

#define SET_PAGE_DIR (   tsk,
  pgdir 
)

Definition at line 222 of file pgtable.h.

#define set_pmd (   pmdptr,
  pmdval 
)    (*(pmdptr) = pmdval)

Definition at line 58 of file pgtable.h.

#define set_pte (   pteptr,
  pteval 
)    ((*(pteptr)) = (pteval))

Definition at line 52 of file pgtable.h.

#define set_pte_at (   mm,
  addr,
  ptep,
  pteval 
)    set_pte(ptep, pteval)

Definition at line 53 of file pgtable.h.

#define SIZEOF_PTR_LOG2   2

Definition at line 215 of file pgtable.h.

#define USER_PTRS_PER_PGD   (TASK_SIZE/PGDIR_SIZE)

Definition at line 79 of file pgtable.h.

#define VMALLOC_END   (PAGE_OFFSET)

Definition at line 97 of file pgtable.h.

#define VMALLOC_START   (PAGE_OFFSET-0x04000000)

Definition at line 96 of file pgtable.h.

#define VMALLOC_VMADDR (   x)    ((unsigned long)(x))

Definition at line 98 of file pgtable.h.

#define ZERO_PAGE (   vaddr)    (virt_to_page(empty_zero_page))

Definition at line 205 of file pgtable.h.

Typedef Documentation

typedef pte_t* pte_addr_t

Definition at line 459 of file pgtable.h.

Function Documentation

void paging_init ( void  )

paging_init - setup page tables

paging_init() sets up the page tables for each node of the system and frees the bootmem allocator memory for general use.

Definition at line 238 of file init.c.

Variable Documentation

unsigned long empty_zero_page[2048]

Definition at line 42 of file mmu.c.

pgd_t swapper_pg_dir[PTRS_PER_PGD]

Definition at line 36 of file init.c.