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/page.h>
#include <asm-generic/pgtable-nopmd.h>
#include <linux/sched.h>
#include <asm/mmu.h>
#include <arch/pgtable.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 set_pgu(pudptr, pudval)   (*(pudptr) = pudval)
 
#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 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 & ~_PAGE_KERNEL)) != _PAGE_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 pgprot_noncached(prot)   __pgprot((pgprot_val(prot) | _PAGE_NO_CACHE))
 
#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_vaddr(pmd)   ((unsigned long) __va(pmd_val(pmd) & PAGE_MASK))
 
#define pgd_index(address)   (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD-1))
 
#define pgd_offset_k(address)   pgd_offset(&init_mm, address)
 
#define __pte_offset(address)   (((address) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
 
#define pte_offset_kernel(dir, address)   ((pte_t *) pmd_page_vaddr(*(dir)) + __pte_offset(address))
 
#define pte_offset_map(dir, address)   ((pte_t *)page_address(pmd_page(*(dir))) + __pte_offset(address))
 
#define pte_unmap(pte)   do { } while (0)
 
#define pte_pfn(x)   ((unsigned long)(__va((x).pte)) >> PAGE_SHIFT)
 
#define pfn_pte(pfn, prot)   __pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))
 
#define pte_ERROR(e)   printk("%s:%d: bad pte %p(%08lx).\n", __FILE__, __LINE__, &(e), pte_val(e))
 
#define pgd_ERROR(e)   printk("%s:%d: bad pgd %p(%08lx).\n", __FILE__, __LINE__, &(e), pgd_val(e))
 
#define io_remap_pfn_range(vma, vaddr, pfn, size, prot)   remap_pfn_range(vma, vaddr, pfn, size, prot)
 
#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 kern_addr_valid(addr)   (1)
 
#define pgtable_cache_init()   do { } while (0)
 
#define pte_to_pgoff(x)   (pte_val(x) >> 6)
 
#define pgoff_to_pte(x)   __pte(((x) << 6) | _PAGE_FILE)
 

Typedefs

typedef pte_tpte_addr_t
 

Functions

void paging_init (void)
 

Variables

unsigned long empty_zero_page
 
pgd_t swapper_pg_dir [PTRS_PER_PGD]
 

Macro Definition Documentation

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

Definition at line 218 of file pgtable.h.

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

Definition at line 245 of file pgtable.h.

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

Definition at line 284 of file pgtable.h.

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

Definition at line 283 of file pgtable.h.

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

Definition at line 285 of file pgtable.h.

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

Definition at line 282 of file pgtable.h.

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

Definition at line 281 of file pgtable.h.

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

Definition at line 79 of file pgtable.h.

#define FIRST_USER_ADDRESS   0

Definition at line 70 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 261 of file pgtable.h.

#define kern_addr_valid (   addr)    (1)

Definition at line 287 of file pgtable.h.

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

Definition at line 187 of file pgtable.h.

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

Definition at line 189 of file pgtable.h.

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

Definition at line 89 of file pgtable.h.

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

Definition at line 254 of file pgtable.h.

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

Definition at line 258 of file pgtable.h.

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

Definition at line 233 of file pgtable.h.

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

Definition at line 242 of file pgtable.h.

#define PGDIR_MASK   (~(PGDIR_SIZE-1))

Definition at line 53 of file pgtable.h.

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

Definition at line 51 of file pgtable.h.

#define PGDIR_SIZE   (1UL << PGDIR_SHIFT)

Definition at line 52 of file pgtable.h.

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

Definition at line 297 of file pgtable.h.

#define pgprot_noncached (   prot)    __pgprot((pgprot_val(prot) | _PAGE_NO_CACHE))

Definition at line 200 of file pgtable.h.

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

Definition at line 294 of file pgtable.h.

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

Definition at line 103 of file pgtable.h.

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

Definition at line 105 of file pgtable.h.

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

Definition at line 99 of file pgtable.h.

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

Definition at line 229 of file pgtable.h.

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

Definition at line 230 of file pgtable.h.

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

Definition at line 104 of file pgtable.h.

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

Definition at line 97 of file pgtable.h.

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

Definition at line 256 of file pgtable.h.

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

Definition at line 95 of file pgtable.h.

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

Definition at line 247 of file pgtable.h.

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

Definition at line 249 of file pgtable.h.

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

Definition at line 219 of file pgtable.h.

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

Definition at line 214 of file pgtable.h.

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

Definition at line 253 of file pgtable.h.

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

Definition at line 96 of file pgtable.h.

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

Definition at line 296 of file pgtable.h.

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

Definition at line 252 of file pgtable.h.

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

Definition at line 82 of file pgtable.h.

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

Definition at line 62 of file pgtable.h.

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

Definition at line 61 of file pgtable.h.

#define SET_PAGE_DIR (   tsk,
  pgdir 
)

Definition at line 93 of file pgtable.h.

#define set_pgu (   pudptr,
  pudval 
)    (*(pudptr) = pudval)

Definition at line 44 of file pgtable.h.

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

Definition at line 43 of file pgtable.h.

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

Definition at line 36 of file pgtable.h.

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

Definition at line 37 of file pgtable.h.

#define SIZEOF_PTR_LOG2   2

Definition at line 86 of file pgtable.h.

#define USER_PTRS_PER_PGD   (TASK_SIZE/PGDIR_SIZE)

Definition at line 69 of file pgtable.h.

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

Definition at line 75 of file pgtable.h.

Typedef Documentation

typedef pte_t* pte_addr_t

Definition at line 299 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

Definition at line 42 of file mmu.c.

pgd_t swapper_pg_dir[PTRS_PER_PGD]

Definition at line 36 of file init.c.