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 <linux/const.h>
#include <asm-generic/pgtable-nopmd.h>
#include <asm/fixmap.h>
#include <asm/setup.h>
#include <asm/pgtable-bits.h>
#include <asm-generic/pgtable.h>

Go to the source code of this file.

Macros

#define PGDIR_SHIFT   22
 
#define PGDIR_SIZE   (_AC(1, UL) << PGDIR_SHIFT)
 
#define PGDIR_MASK   (~(PGDIR_SIZE - 1))
 
#define PGD_ORDER   0
 
#define PTE_ORDER   0
 
#define PTRS_PER_PGD   1024
 
#define PTRS_PER_PTE   1024
 
#define USER_PTRS_PER_PGD   (0x80000000UL/PGDIR_SIZE)
 
#define FIRST_USER_ADDRESS   0
 
#define VMALLOC_START   (0xc0000000UL)
 
#define PKMAP_BASE   (0xfd000000UL)
 
#define VMALLOC_END   (FIXADDR_START - 2*PAGE_SIZE)
 
#define pte_ERROR(e)
 
#define pgd_ERROR(e)
 
#define pmd_bad(pmd)   (pmd_val(pmd) & ~PAGE_MASK)
 
#define pte_page(x)   pfn_to_page(pte_pfn(x))
 
#define pte_pfn(x)   ((unsigned long)((x).pte >> PAGE_SHIFT))
 
#define pfn_pte(pfn, prot)   __pte(((unsigned long long)(pfn) << PAGE_SHIFT) | pgprot_val(prot))
 
#define __pgd_offset(address)   pgd_index(address)
 
#define __pud_offset(address)   (((address) >> PUD_SHIFT) & (PTRS_PER_PUD-1))
 
#define __pmd_offset(address)   (((address) >> PMD_SHIFT) & (PTRS_PER_PMD-1))
 
#define pgd_offset_k(address)   pgd_offset(&init_mm, address)
 
#define pgd_index(address)   (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD-1))
 
#define pgd_offset(mm, addr)   ((mm)->pgd + pgd_index(addr))
 
#define __pte_offset(address)   (((address) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
 
#define pte_offset(dir, address)   ((pte_t *) pmd_page_vaddr(*(dir)) + __pte_offset(address))
 
#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)   ((void)(pte))
 
#define PTE_FILE_MAX_BITS   30
 
#define pte_to_pgoff(_pte)   (((_pte).pte & 0x1ff) | (((_pte).pte >> 11) << 9))
 
#define pgoff_to_pte(off)   ((pte_t) {((off) & 0x1ff) | (((off) >> 9) << 11) | _PAGE_FILE})
 
#define __pte_to_swp_entry(pte)   ((swp_entry_t) { pte_val(pte)})
 
#define __swp_entry_to_pte(x)   ((pte_t) {(x).val})
 
#define pmd_phys(pmd)   __pa((void *)pmd_val(pmd))
 
#define pmd_page(pmd)   (pfn_to_page(pmd_phys(pmd) >> PAGE_SHIFT))
 
#define mk_pte(page, prot)   pfn_pte(page_to_pfn(page), prot)
 
#define set_pte(pteptr, pteval)   (*(pteptr) = pteval)
 
#define set_pte_at(mm, addr, ptep, pteval)   set_pte(ptep, pteval)
 
#define pte_clear(mm, addr, xp)   do { set_pte_at(mm, addr, xp, __pte(0)); } while (0)
 
#define io_remap_pfn_range(vma, vaddr, pfn, size, prot)   remap_pfn_range(vma, vaddr, pfn, size, prot)
 
#define pgd_present(pgd)   (1)
 
#define pgd_none(pgd)   (0)
 
#define pgd_bad(pgd)   (0)
 
#define pgd_clear(pgdp)   do { } while (0)
 
#define kern_addr_valid(addr)   (1)
 
#define pmd_page_vaddr(pmd)   pmd_val(pmd)
 
#define pte_none(pte)   (!(pte_val(pte) & ~_PAGE_GLOBAL))
 
#define pte_present(pte)   (pte_val(pte) & _PAGE_PRESENT)
 
#define PAGE_NONE   __pgprot(_PAGE_PRESENT | _PAGE_CACHE)
 
#define PAGE_SHARED
 
#define PAGE_COPY   __pgprot(_PAGE_PRESENT | _PAGE_READ | _PAGE_CACHE)
 
#define PAGE_READONLY   __pgprot(_PAGE_PRESENT | _PAGE_READ | _PAGE_CACHE)
 
#define PAGE_KERNEL
 
#define PAGE_KERNEL_UNCACHED
 
#define __P000   PAGE_NONE
 
#define __P001   PAGE_READONLY
 
#define __P010   PAGE_COPY
 
#define __P011   PAGE_COPY
 
#define __P100   PAGE_READONLY
 
#define __P101   PAGE_READONLY
 
#define __P110   PAGE_COPY
 
#define __P111   PAGE_COPY
 
#define __S000   PAGE_NONE
 
#define __S001   PAGE_READONLY
 
#define __S010   PAGE_SHARED
 
#define __S011   PAGE_SHARED
 
#define __S100   PAGE_READONLY
 
#define __S101   PAGE_READONLY
 
#define __S110   PAGE_SHARED
 
#define __S111   PAGE_SHARED
 
#define pgprot_noncached   pgprot_noncached
 
#define __swp_type(x)   ((x).val & 0x1f)
 
#define __swp_offset(x)   ((x).val >> 11)
 
#define __swp_entry(type, offset)   ((swp_entry_t){(type) | ((offset) << 11)})
 
#define ZERO_PAGE(vaddr)
 
#define pgtable_cache_init()   do {} while (0)
 
#define arch_enter_lazy_cpu_mode()   do {} while (0)
 
#define pte_special(pte)   (0)
 
#define set_pmd(pmdptr, pmdval)   do { *(pmdptr) = (pmdval); } while (0)
 
#define pte_present(pte)   (pte_val(pte) & _PAGE_PRESENT)
 

Functions

void load_pgd (unsigned long pg_dir)
 
void paging_init (void)
 
void __update_tlb (struct vm_area_struct *vma, unsigned long address, pte_t pte)
 
void __update_cache (struct vm_area_struct *vma, unsigned long address, pte_t pte)
 
void setup_memory (void)
 

Variables

pte_t invalid_pte_table [PAGE_SIZE/sizeof(pte_t)]
 
unsigned long empty_zero_page
 
unsigned long zero_page_mask
 
unsigned long pgd_current
 
pgd_t swapper_pg_dir [PTRS_PER_PGD]
 

Macro Definition Documentation

#define __P000   PAGE_NONE

Definition at line 145 of file pgtable.h.

#define __P001   PAGE_READONLY

Definition at line 146 of file pgtable.h.

#define __P010   PAGE_COPY

Definition at line 147 of file pgtable.h.

#define __P011   PAGE_COPY

Definition at line 148 of file pgtable.h.

#define __P100   PAGE_READONLY

Definition at line 149 of file pgtable.h.

#define __P101   PAGE_READONLY

Definition at line 150 of file pgtable.h.

#define __P110   PAGE_COPY

Definition at line 151 of file pgtable.h.

#define __P111   PAGE_COPY

Definition at line 152 of file pgtable.h.

#define __pgd_offset (   address)    pgd_index(address)

Definition at line 70 of file pgtable.h.

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

Definition at line 72 of file pgtable.h.

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

Definition at line 82 of file pgtable.h.

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

Definition at line 102 of file pgtable.h.

#define __pud_offset (   address)    (((address) >> PUD_SHIFT) & (PTRS_PER_PUD-1))

Definition at line 71 of file pgtable.h.

#define __S000   PAGE_NONE

Definition at line 154 of file pgtable.h.

#define __S001   PAGE_READONLY

Definition at line 155 of file pgtable.h.

#define __S010   PAGE_SHARED

Definition at line 156 of file pgtable.h.

#define __S011   PAGE_SHARED

Definition at line 157 of file pgtable.h.

#define __S100   PAGE_READONLY

Definition at line 158 of file pgtable.h.

#define __S101   PAGE_READONLY

Definition at line 159 of file pgtable.h.

#define __S110   PAGE_SHARED

Definition at line 160 of file pgtable.h.

#define __S111   PAGE_SHARED

Definition at line 161 of file pgtable.h.

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

Definition at line 176 of file pgtable.h.

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

Definition at line 104 of file pgtable.h.

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

Definition at line 175 of file pgtable.h.

#define __swp_type (   x)    ((x).val & 0x1f)

Definition at line 174 of file pgtable.h.

#define arch_enter_lazy_cpu_mode ( )    do {} while (0)

Definition at line 187 of file pgtable.h.

#define FIRST_USER_ADDRESS   0

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

#define kern_addr_valid (   addr)    (1)

Definition at line 129 of file pgtable.h.

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

Definition at line 108 of file pgtable.h.

#define PAGE_COPY   __pgprot(_PAGE_PRESENT | _PAGE_READ | _PAGE_CACHE)

Definition at line 138 of file pgtable.h.

#define PAGE_KERNEL
Value:

Definition at line 140 of file pgtable.h.

#define PAGE_KERNEL_UNCACHED
Value:

Definition at line 142 of file pgtable.h.

#define PAGE_NONE   __pgprot(_PAGE_PRESENT | _PAGE_CACHE)

Definition at line 135 of file pgtable.h.

#define PAGE_READONLY   __pgprot(_PAGE_PRESENT | _PAGE_READ | _PAGE_CACHE)

Definition at line 139 of file pgtable.h.

#define PAGE_SHARED
Value:

Definition at line 136 of file pgtable.h.

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

Definition at line 67 of file pgtable.h.

#define pgd_bad (   pgd)    (0)

Definition at line 126 of file pgtable.h.

#define pgd_clear (   pgdp)    do { } while (0)

Definition at line 127 of file pgtable.h.

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

Definition at line 41 of file pgtable.h.

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

Definition at line 76 of file pgtable.h.

#define pgd_none (   pgd)    (0)

Definition at line 125 of file pgtable.h.

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

Definition at line 79 of file pgtable.h.

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

Definition at line 75 of file pgtable.h.

#define PGD_ORDER   0

Definition at line 23 of file pgtable.h.

#define pgd_present (   pgd)    (1)

Definition at line 124 of file pgtable.h.

#define PGDIR_MASK   (~(PGDIR_SIZE - 1))

Definition at line 17 of file pgtable.h.

#define PGDIR_SHIFT   22

Definition at line 15 of file pgtable.h.

#define PGDIR_SIZE   (_AC(1, UL) << PGDIR_SHIFT)

Definition at line 16 of file pgtable.h.

#define pgoff_to_pte (   off)    ((pte_t) {((off) & 0x1ff) | (((off) >> 9) << 11) | _PAGE_FILE})

Definition at line 100 of file pgtable.h.

#define pgprot_noncached   pgprot_noncached

Definition at line 163 of file pgtable.h.

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

Definition at line 185 of file pgtable.h.

#define PKMAP_BASE   (0xfd000000UL)

Definition at line 34 of file pgtable.h.

#define pmd_bad (   pmd)    (pmd_val(pmd) & ~PAGE_MASK)

Definition at line 53 of file pgtable.h.

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

Definition at line 107 of file pgtable.h.

#define pmd_page_vaddr (   pmd)    pmd_val(pmd)

Definition at line 130 of file pgtable.h.

#define pmd_phys (   pmd)    __pa((void *)pmd_val(pmd))

Definition at line 106 of file pgtable.h.

#define pte_clear (   mm,
  addr,
  xp 
)    do { set_pte_at(mm, addr, xp, __pte(0)); } while (0)

Definition at line 113 of file pgtable.h.

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

Definition at line 38 of file pgtable.h.

#define PTE_FILE_MAX_BITS   30

Definition at line 97 of file pgtable.h.

#define pte_none (   pte)    (!(pte_val(pte) & ~_PAGE_GLOBAL))

Definition at line 132 of file pgtable.h.

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

Definition at line 84 of file pgtable.h.

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

Definition at line 86 of file pgtable.h.

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

Definition at line 89 of file pgtable.h.

#define PTE_ORDER   0

Definition at line 24 of file pgtable.h.

#define pte_page (   x)    pfn_to_page(pte_pfn(x))

Definition at line 65 of file pgtable.h.

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

Definition at line 66 of file pgtable.h.

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

Definition at line 255 of file pgtable.h.

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

Definition at line 255 of file pgtable.h.

#define pte_special (   pte)    (0)

Definition at line 209 of file pgtable.h.

#define pte_to_pgoff (   _pte)    (((_pte).pte & 0x1ff) | (((_pte).pte >> 11) << 9))

Definition at line 98 of file pgtable.h.

#define pte_unmap (   pte)    ((void)(pte))

Definition at line 91 of file pgtable.h.

#define PTRS_PER_PGD   1024

Definition at line 26 of file pgtable.h.

#define PTRS_PER_PTE   1024

Definition at line 27 of file pgtable.h.

#define set_pmd (   pmdptr,
  pmdval 
)    do { *(pmdptr) = (pmdval); } while (0)

Definition at line 253 of file pgtable.h.

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

Definition at line 111 of file pgtable.h.

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

Definition at line 112 of file pgtable.h.

#define USER_PTRS_PER_PGD   (0x80000000UL/PGDIR_SIZE)

Definition at line 29 of file pgtable.h.

#define VMALLOC_END   (FIXADDR_START - 2*PAGE_SIZE)

Definition at line 36 of file pgtable.h.

#define VMALLOC_START   (0xc0000000UL)

Definition at line 32 of file pgtable.h.

#define ZERO_PAGE (   vaddr)
Value:
(((unsigned long)(vaddr)) & zero_page_mask))))

Definition at line 181 of file pgtable.h.

Function Documentation

void __update_cache ( struct vm_area_struct vma,
unsigned long  address,
pte_t  pte 
)

Definition at line 121 of file cache.c.

void __update_tlb ( struct vm_area_struct vma,
unsigned long  address,
pte_t  pte 
)

Definition at line 189 of file tlb-r3k.c.

void load_pgd ( unsigned long  pg_dir)
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.

void setup_memory ( void  )

Definition at line 71 of file discontig.c.

Variable Documentation

unsigned long empty_zero_page

Definition at line 42 of file mmu.c.

pte_t invalid_pte_table[PAGE_SIZE/sizeof(pte_t)]
unsigned long pgd_current

Definition at line 470 of file init.c.

pgd_t swapper_pg_dir[PTRS_PER_PGD]

Definition at line 36 of file init.c.

unsigned long zero_page_mask

Definition at line 42 of file init.c.