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/mman.h>
#include <asm/page.h>
#include <asm/processor.h>
#include <asm/types.h>
#include <linux/sched.h>
#include <linux/bitops.h>
#include <asm/cacheflush.h>
#include <asm/mmu_context.h>
#include <asm-generic/pgtable-nopud.h>
#include <asm-generic/pgtable.h>

Go to the source code of this file.

Macros

#define IA64_MAX_PHYS_BITS   50 /* max. number of physical address bits (architected) */
 
#define _PAGE_P_BIT   0
 
#define _PAGE_A_BIT   5
 
#define _PAGE_D_BIT   6
 
#define _PAGE_P   (1 << _PAGE_P_BIT) /* page present bit */
 
#define _PAGE_MA_WB   (0x0 << 2) /* write back memory attribute */
 
#define _PAGE_MA_UC   (0x4 << 2) /* uncacheable memory attribute */
 
#define _PAGE_MA_UCE   (0x5 << 2) /* UC exported attribute */
 
#define _PAGE_MA_WC   (0x6 << 2) /* write coalescing memory attribute */
 
#define _PAGE_MA_NAT   (0x7 << 2) /* not-a-thing attribute */
 
#define _PAGE_MA_MASK   (0x7 << 2)
 
#define _PAGE_PL_0   (0 << 7) /* privilege level 0 (kernel) */
 
#define _PAGE_PL_1   (1 << 7) /* privilege level 1 (unused) */
 
#define _PAGE_PL_2   (2 << 7) /* privilege level 2 (unused) */
 
#define _PAGE_PL_3   (3 << 7) /* privilege level 3 (user) */
 
#define _PAGE_PL_MASK   (3 << 7)
 
#define _PAGE_AR_R   (0 << 9) /* read only */
 
#define _PAGE_AR_RX   (1 << 9) /* read & execute */
 
#define _PAGE_AR_RW   (2 << 9) /* read & write */
 
#define _PAGE_AR_RWX   (3 << 9) /* read, write & execute */
 
#define _PAGE_AR_R_RW   (4 << 9) /* read / read & write */
 
#define _PAGE_AR_RX_RWX   (5 << 9) /* read & exec / read, write & exec */
 
#define _PAGE_AR_RWX_RW   (6 << 9) /* read, write & exec / read & write */
 
#define _PAGE_AR_X_RX   (7 << 9) /* exec & promote / read & exec */
 
#define _PAGE_AR_MASK   (7 << 9)
 
#define _PAGE_AR_SHIFT   9
 
#define _PAGE_A   (1 << _PAGE_A_BIT) /* page accessed bit */
 
#define _PAGE_D   (1 << _PAGE_D_BIT) /* page dirty bit */
 
#define _PAGE_PPN_MASK   (((__IA64_UL(1) << IA64_MAX_PHYS_BITS) - 1) & ~0xfffUL)
 
#define _PAGE_ED   (__IA64_UL(1) << 52) /* exception deferral */
 
#define _PAGE_PROTNONE   (__IA64_UL(1) << 63)
 
#define _PAGE_FILE   (1 << 1) /* see swap & file pte remarks below */
 
#define _PFN_MASK   _PAGE_PPN_MASK
 
#define _PAGE_CHG_MASK   (_PAGE_P | _PAGE_PROTNONE | _PAGE_PL_MASK | _PAGE_AR_MASK | _PAGE_ED)
 
#define _PAGE_SIZE_4K   12
 
#define _PAGE_SIZE_8K   13
 
#define _PAGE_SIZE_16K   14
 
#define _PAGE_SIZE_64K   16
 
#define _PAGE_SIZE_256K   18
 
#define _PAGE_SIZE_1M   20
 
#define _PAGE_SIZE_4M   22
 
#define _PAGE_SIZE_16M   24
 
#define _PAGE_SIZE_64M   26
 
#define _PAGE_SIZE_256M   28
 
#define _PAGE_SIZE_1G   30
 
#define _PAGE_SIZE_4G   32
 
#define __ACCESS_BITS   _PAGE_ED | _PAGE_A | _PAGE_P | _PAGE_MA_WB
 
#define __DIRTY_BITS_NO_ED   _PAGE_A | _PAGE_P | _PAGE_D | _PAGE_MA_WB
 
#define __DIRTY_BITS   _PAGE_ED | __DIRTY_BITS_NO_ED
 
#define PTRS_PER_PTD_SHIFT   (PAGE_SHIFT-3)
 
#define PTRS_PER_PTE   (__IA64_UL(1) << (PTRS_PER_PTD_SHIFT))
 
#define PMD_SHIFT   (PAGE_SHIFT + (PTRS_PER_PTD_SHIFT))
 
#define PMD_SIZE   (1UL << PMD_SHIFT)
 
#define PMD_MASK   (~(PMD_SIZE-1))
 
#define PTRS_PER_PMD   (1UL << (PTRS_PER_PTD_SHIFT))
 
#define PGDIR_SHIFT   (PMD_SHIFT + (PTRS_PER_PTD_SHIFT))
 
#define PGDIR_SIZE   (__IA64_UL(1) << PGDIR_SHIFT)
 
#define PGDIR_MASK   (~(PGDIR_SIZE-1))
 
#define PTRS_PER_PGD_SHIFT   PTRS_PER_PTD_SHIFT
 
#define PTRS_PER_PGD   (1UL << PTRS_PER_PGD_SHIFT)
 
#define USER_PTRS_PER_PGD   (5*PTRS_PER_PGD/8) /* regions 0-4 are user regions */
 
#define FIRST_USER_ADDRESS   0
 
#define PAGE_NONE   __pgprot(_PAGE_PROTNONE | _PAGE_A)
 
#define PAGE_SHARED   __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_RW)
 
#define PAGE_READONLY   __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_R)
 
#define PAGE_COPY   __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_R)
 
#define PAGE_COPY_EXEC   __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_RX)
 
#define PAGE_GATE   __pgprot(__ACCESS_BITS | _PAGE_PL_0 | _PAGE_AR_X_RX)
 
#define PAGE_KERNEL   __pgprot(__DIRTY_BITS | _PAGE_PL_0 | _PAGE_AR_RWX)
 
#define PAGE_KERNELRX   __pgprot(__ACCESS_BITS | _PAGE_PL_0 | _PAGE_AR_RX)
 
#define PAGE_KERNEL_UC
 
#define __P000   PAGE_NONE
 
#define __P001   PAGE_READONLY
 
#define __P010   PAGE_READONLY /* write to priv pg -> copy & make writable */
 
#define __P011   PAGE_READONLY /* ditto */
 
#define __P100   __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_X_RX)
 
#define __P101   __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_RX)
 
#define __P110   PAGE_COPY_EXEC
 
#define __P111   PAGE_COPY_EXEC
 
#define __S000   PAGE_NONE
 
#define __S001   PAGE_READONLY
 
#define __S010   PAGE_SHARED /* we don't have (and don't need) write-only */
 
#define __S011   PAGE_SHARED
 
#define __S100   __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_X_RX)
 
#define __S101   __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_RX)
 
#define __S110   __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_RWX)
 
#define __S111   __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_RWX)
 
#define pgd_ERROR(e)   printk("%s:%d: bad pgd %016lx.\n", __FILE__, __LINE__, pgd_val(e))
 
#define pmd_ERROR(e)   printk("%s:%d: bad pmd %016lx.\n", __FILE__, __LINE__, pmd_val(e))
 
#define pte_ERROR(e)   printk("%s:%d: bad pte %016lx.\n", __FILE__, __LINE__, pte_val(e))
 
#define kern_addr_valid(addr)   (1)
 
#define VMALLOC_START   (RGN_BASE(RGN_GATE) + 0x200000000UL)
 
#define VMALLOC_END   (RGN_BASE(RGN_GATE) + (1UL << (4*PAGE_SHIFT - 9)))
 
#define kc_vaddr_to_offset(v)   ((v) - RGN_BASE(RGN_GATE))
 
#define kc_offset_to_vaddr(o)   ((o) + RGN_BASE(RGN_GATE))
 
#define RGN_MAP_SHIFT   (PGDIR_SHIFT + PTRS_PER_PGD_SHIFT - 3)
 
#define RGN_MAP_LIMIT   ((1UL << RGN_MAP_SHIFT) - PAGE_SIZE) /* per region addr limit */
 
#define pfn_pte(pfn, pgprot)   ({ pte_t __pte; pte_val(__pte) = ((pfn) << PAGE_SHIFT) | pgprot_val(pgprot); __pte; })
 
#define pte_pfn(_pte)   ((pte_val(_pte) & _PFN_MASK) >> PAGE_SHIFT)
 
#define mk_pte(page, pgprot)   pfn_pte(page_to_pfn(page), (pgprot))
 
#define mk_pte_phys(physpage, pgprot)   ({ pte_t __pte; pte_val(__pte) = physpage + pgprot_val(pgprot); __pte; })
 
#define pte_modify(_pte, newprot)   (__pte((pte_val(_pte) & ~_PAGE_CHG_MASK) | (pgprot_val(newprot) & _PAGE_CHG_MASK)))
 
#define pte_none(pte)   (!pte_val(pte))
 
#define pte_present(pte)   (pte_val(pte) & (_PAGE_P | _PAGE_PROTNONE))
 
#define pte_clear(mm, addr, pte)   (pte_val(*(pte)) = 0UL)
 
#define pte_page(pte)   virt_to_page(((pte_val(pte) & _PFN_MASK) + PAGE_OFFSET))
 
#define pmd_none(pmd)   (!pmd_val(pmd))
 
#define pmd_bad(pmd)   (!ia64_phys_addr_valid(pmd_val(pmd)))
 
#define pmd_present(pmd)   (pmd_val(pmd) != 0UL)
 
#define pmd_clear(pmdp)   (pmd_val(*(pmdp)) = 0UL)
 
#define pmd_page_vaddr(pmd)   ((unsigned long) __va(pmd_val(pmd) & _PFN_MASK))
 
#define pmd_page(pmd)   virt_to_page((pmd_val(pmd) + PAGE_OFFSET))
 
#define pud_none(pud)   (!pud_val(pud))
 
#define pud_bad(pud)   (!ia64_phys_addr_valid(pud_val(pud)))
 
#define pud_present(pud)   (pud_val(pud) != 0UL)
 
#define pud_clear(pudp)   (pud_val(*(pudp)) = 0UL)
 
#define pud_page_vaddr(pud)   ((unsigned long) __va(pud_val(pud) & _PFN_MASK))
 
#define pud_page(pud)   virt_to_page((pud_val(pud) + PAGE_OFFSET))
 
#define pte_write(pte)   ((unsigned) (((pte_val(pte) & _PAGE_AR_MASK) >> _PAGE_AR_SHIFT) - 2) <= 4)
 
#define pte_exec(pte)   ((pte_val(pte) & _PAGE_AR_RX) != 0)
 
#define pte_dirty(pte)   ((pte_val(pte) & _PAGE_D) != 0)
 
#define pte_young(pte)   ((pte_val(pte) & _PAGE_A) != 0)
 
#define pte_file(pte)   ((pte_val(pte) & _PAGE_FILE) != 0)
 
#define pte_special(pte)   0
 
#define pte_wrprotect(pte)   (__pte(pte_val(pte) & ~_PAGE_AR_RW))
 
#define pte_mkwrite(pte)   (__pte(pte_val(pte) | _PAGE_AR_RW))
 
#define pte_mkold(pte)   (__pte(pte_val(pte) & ~_PAGE_A))
 
#define pte_mkyoung(pte)   (__pte(pte_val(pte) | _PAGE_A))
 
#define pte_mkclean(pte)   (__pte(pte_val(pte) & ~_PAGE_D))
 
#define pte_mkdirty(pte)   (__pte(pte_val(pte) | _PAGE_D))
 
#define pte_mkhuge(pte)   (__pte(pte_val(pte)))
 
#define pte_mkspecial(pte)   (pte)
 
#define pte_present_exec_user(pte)
 
#define set_pte_at(mm, addr, ptep, pteval)   set_pte(ptep,pteval)
 
#define pgprot_cacheable(prot)   __pgprot((pgprot_val(prot) & ~_PAGE_MA_MASK) | _PAGE_MA_WB)
 
#define pgprot_noncached(prot)   __pgprot((pgprot_val(prot) & ~_PAGE_MA_MASK) | _PAGE_MA_UC)
 
#define pgprot_writecombine(prot)   __pgprot((pgprot_val(prot) & ~_PAGE_MA_MASK) | _PAGE_MA_WC)
 
#define __HAVE_PHYS_MEM_ACCESS_PROT
 
#define pgd_offset_k(addr)   (init_mm.pgd + (((addr) >> PGDIR_SHIFT) & (PTRS_PER_PGD - 1)))
 
#define pgd_offset_gate(mm, addr)   pgd_offset_k(addr)
 
#define pmd_offset(dir, addr)   ((pmd_t *) pud_page_vaddr(*(dir)) + (((addr) >> PMD_SHIFT) & (PTRS_PER_PMD - 1)))
 
#define pte_index(addr)   (((addr) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
 
#define pte_offset_kernel(dir, addr)   ((pte_t *) pmd_page_vaddr(*(dir)) + pte_index(addr))
 
#define pte_offset_map(dir, addr)   pte_offset_kernel(dir, addr)
 
#define pte_unmap(pte)   do { } while (0)
 
#define update_mmu_cache(vma, address, ptep)   do { } while (0)
 
#define __swp_type(entry)   (((entry).val >> 2) & 0x7f)
 
#define __swp_offset(entry)   (((entry).val << 1) >> 10)
 
#define __swp_entry(type, offset)   ((swp_entry_t) { ((type) << 2) | ((long) (offset) << 9) })
 
#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   61
 
#define pte_to_pgoff(pte)   ((pte_val(pte) << 1) >> 3)
 
#define pgoff_to_pte(off)   ((pte_t) { ((off) << 2) | _PAGE_FILE })
 
#define io_remap_pfn_range(vma, vaddr, pfn, size, prot)   remap_pfn_range(vma, vaddr, pfn, size, prot)
 
#define ZERO_PAGE(vaddr)   (zero_page_memmap_ptr)
 
#define HAVE_ARCH_UNMAPPED_AREA
 
#define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS
 
#define ptep_set_access_flags(__vma, __addr, __ptep, __entry, __safely_writable)
 
#define IA64_GRANULE_SIZE   (1 << IA64_GRANULE_SHIFT)
 
#define KERNEL_TR_PAGE_SHIFT   _PAGE_SIZE_64M
 
#define KERNEL_TR_PAGE_SIZE   (1 << KERNEL_TR_PAGE_SHIFT)
 
#define pgtable_cache_init()   do { } while (0)
 
#define FIXADDR_USER_START   GATE_ADDR
 
#define FIXADDR_USER_END   (GATE_ADDR + 2*PERCPU_PAGE_SIZE)
 
#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
 
#define __HAVE_ARCH_PTEP_GET_AND_CLEAR
 
#define __HAVE_ARCH_PTEP_SET_WRPROTECT
 
#define __HAVE_ARCH_PTE_SAME
 
#define __HAVE_ARCH_PGD_OFFSET_GATE
 

Functions

void __ia64_sync_icache_dcache (pte_t pteval)
 
pgprot_t phys_mem_access_prot (struct file *file, unsigned long pfn, unsigned long size, pgprot_t vma_prot)
 
void paging_init (void)
 

Variables

pgd_t swapper_pg_dir [PTRS_PER_PGD]
 
unsigned long empty_zero_page [PAGE_SIZE/sizeof(unsigned long)]
 
struct pagezero_page_memmap_ptr
 

Macro Definition Documentation

#define __ACCESS_BITS   _PAGE_ED | _PAGE_A | _PAGE_P | _PAGE_MA_WB

Definition at line 80 of file pgtable.h.

#define __DIRTY_BITS   _PAGE_ED | __DIRTY_BITS_NO_ED

Definition at line 82 of file pgtable.h.

#define __DIRTY_BITS_NO_ED   _PAGE_A | _PAGE_P | _PAGE_D | _PAGE_MA_WB

Definition at line 81 of file pgtable.h.

#define __HAVE_ARCH_PGD_OFFSET_GATE

Definition at line 604 of file pgtable.h.

#define __HAVE_ARCH_PTE_SAME

Definition at line 603 of file pgtable.h.

#define __HAVE_ARCH_PTEP_GET_AND_CLEAR

Definition at line 601 of file pgtable.h.

#define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS

Definition at line 517 of file pgtable.h.

#define __HAVE_ARCH_PTEP_SET_WRPROTECT

Definition at line 602 of file pgtable.h.

#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG

Definition at line 600 of file pgtable.h.

#define __HAVE_PHYS_MEM_ACCESS_PROT

Definition at line 362 of file pgtable.h.

#define __P000   PAGE_NONE

Definition at line 167 of file pgtable.h.

#define __P001   PAGE_READONLY

Definition at line 168 of file pgtable.h.

#define __P010   PAGE_READONLY /* write to priv pg -> copy & make writable */

Definition at line 169 of file pgtable.h.

#define __P011   PAGE_READONLY /* ditto */

Definition at line 170 of file pgtable.h.

#define __P100   __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_X_RX)

Definition at line 171 of file pgtable.h.

#define __P101   __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_RX)

Definition at line 172 of file pgtable.h.

#define __P110   PAGE_COPY_EXEC

Definition at line 173 of file pgtable.h.

#define __P111   PAGE_COPY_EXEC

Definition at line 174 of file pgtable.h.

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

Definition at line 489 of file pgtable.h.

#define __S000   PAGE_NONE

Definition at line 176 of file pgtable.h.

#define __S001   PAGE_READONLY

Definition at line 177 of file pgtable.h.

#define __S010   PAGE_SHARED /* we don't have (and don't need) write-only */

Definition at line 178 of file pgtable.h.

#define __S011   PAGE_SHARED

Definition at line 179 of file pgtable.h.

#define __S100   __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_X_RX)

Definition at line 180 of file pgtable.h.

#define __S101   __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_RX)

Definition at line 181 of file pgtable.h.

#define __S110   __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_RWX)

Definition at line 182 of file pgtable.h.

#define __S111   __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_RWX)

Definition at line 183 of file pgtable.h.

#define __swp_entry (   type,
  offset 
)    ((swp_entry_t) { ((type) << 2) | ((long) (offset) << 9) })

Definition at line 488 of file pgtable.h.

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

Definition at line 490 of file pgtable.h.

#define __swp_offset (   entry)    (((entry).val << 1) >> 10)

Definition at line 487 of file pgtable.h.

#define __swp_type (   entry)    (((entry).val >> 2) & 0x7f)

Definition at line 486 of file pgtable.h.

#define _PAGE_A   (1 << _PAGE_A_BIT) /* page accessed bit */

Definition at line 54 of file pgtable.h.

#define _PAGE_A_BIT   5

Definition at line 29 of file pgtable.h.

#define _PAGE_AR_MASK   (7 << 9)

Definition at line 52 of file pgtable.h.

#define _PAGE_AR_R   (0 << 9) /* read only */

Definition at line 44 of file pgtable.h.

#define _PAGE_AR_R_RW   (4 << 9) /* read / read & write */

Definition at line 48 of file pgtable.h.

#define _PAGE_AR_RW   (2 << 9) /* read & write */

Definition at line 46 of file pgtable.h.

#define _PAGE_AR_RWX   (3 << 9) /* read, write & execute */

Definition at line 47 of file pgtable.h.

#define _PAGE_AR_RWX_RW   (6 << 9) /* read, write & exec / read & write */

Definition at line 50 of file pgtable.h.

#define _PAGE_AR_RX   (1 << 9) /* read & execute */

Definition at line 45 of file pgtable.h.

#define _PAGE_AR_RX_RWX   (5 << 9) /* read & exec / read, write & exec */

Definition at line 49 of file pgtable.h.

#define _PAGE_AR_SHIFT   9

Definition at line 53 of file pgtable.h.

#define _PAGE_AR_X_RX   (7 << 9) /* exec & promote / read & exec */

Definition at line 51 of file pgtable.h.

#define _PAGE_CHG_MASK   (_PAGE_P | _PAGE_PROTNONE | _PAGE_PL_MASK | _PAGE_AR_MASK | _PAGE_ED)

Definition at line 65 of file pgtable.h.

#define _PAGE_D   (1 << _PAGE_D_BIT) /* page dirty bit */

Definition at line 55 of file pgtable.h.

#define _PAGE_D_BIT   6

Definition at line 30 of file pgtable.h.

#define _PAGE_ED   (__IA64_UL(1) << 52) /* exception deferral */

Definition at line 57 of file pgtable.h.

#define _PAGE_FILE   (1 << 1) /* see swap & file pte remarks below */

Definition at line 61 of file pgtable.h.

#define _PAGE_MA_MASK   (0x7 << 2)

Definition at line 38 of file pgtable.h.

#define _PAGE_MA_NAT   (0x7 << 2) /* not-a-thing attribute */

Definition at line 37 of file pgtable.h.

#define _PAGE_MA_UC   (0x4 << 2) /* uncacheable memory attribute */

Definition at line 34 of file pgtable.h.

#define _PAGE_MA_UCE   (0x5 << 2) /* UC exported attribute */

Definition at line 35 of file pgtable.h.

#define _PAGE_MA_WB   (0x0 << 2) /* write back memory attribute */

Definition at line 33 of file pgtable.h.

#define _PAGE_MA_WC   (0x6 << 2) /* write coalescing memory attribute */

Definition at line 36 of file pgtable.h.

#define _PAGE_P   (1 << _PAGE_P_BIT) /* page present bit */

Definition at line 32 of file pgtable.h.

#define _PAGE_P_BIT   0

Definition at line 28 of file pgtable.h.

#define _PAGE_PL_0   (0 << 7) /* privilege level 0 (kernel) */

Definition at line 39 of file pgtable.h.

#define _PAGE_PL_1   (1 << 7) /* privilege level 1 (unused) */

Definition at line 40 of file pgtable.h.

#define _PAGE_PL_2   (2 << 7) /* privilege level 2 (unused) */

Definition at line 41 of file pgtable.h.

#define _PAGE_PL_3   (3 << 7) /* privilege level 3 (user) */

Definition at line 42 of file pgtable.h.

#define _PAGE_PL_MASK   (3 << 7)

Definition at line 43 of file pgtable.h.

#define _PAGE_PPN_MASK   (((__IA64_UL(1) << IA64_MAX_PHYS_BITS) - 1) & ~0xfffUL)

Definition at line 56 of file pgtable.h.

#define _PAGE_PROTNONE   (__IA64_UL(1) << 63)

Definition at line 58 of file pgtable.h.

#define _PAGE_SIZE_16K   14

Definition at line 69 of file pgtable.h.

#define _PAGE_SIZE_16M   24

Definition at line 74 of file pgtable.h.

#define _PAGE_SIZE_1G   30

Definition at line 77 of file pgtable.h.

#define _PAGE_SIZE_1M   20

Definition at line 72 of file pgtable.h.

#define _PAGE_SIZE_256K   18

Definition at line 71 of file pgtable.h.

#define _PAGE_SIZE_256M   28

Definition at line 76 of file pgtable.h.

#define _PAGE_SIZE_4G   32

Definition at line 78 of file pgtable.h.

#define _PAGE_SIZE_4K   12

Definition at line 67 of file pgtable.h.

#define _PAGE_SIZE_4M   22

Definition at line 73 of file pgtable.h.

#define _PAGE_SIZE_64K   16

Definition at line 70 of file pgtable.h.

#define _PAGE_SIZE_64M   26

Definition at line 75 of file pgtable.h.

#define _PAGE_SIZE_8K   13

Definition at line 68 of file pgtable.h.

#define _PFN_MASK   _PAGE_PPN_MASK

Definition at line 63 of file pgtable.h.

#define FIRST_USER_ADDRESS   0

Definition at line 133 of file pgtable.h.

#define FIXADDR_USER_END   (GATE_ADDR + 2*PERCPU_PAGE_SIZE)

Definition at line 597 of file pgtable.h.

#define FIXADDR_USER_START   GATE_ADDR

Definition at line 593 of file pgtable.h.

#define HAVE_ARCH_UNMAPPED_AREA

Definition at line 508 of file pgtable.h.

#define IA64_GRANULE_SIZE   (1 << IA64_GRANULE_SHIFT)

Definition at line 580 of file pgtable.h.

#define IA64_MAX_PHYS_BITS   50 /* max. number of physical address bits (architected) */

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

#define kc_offset_to_vaddr (   o)    ((o) + RGN_BASE(RGN_GATE))

Definition at line 243 of file pgtable.h.

#define kc_vaddr_to_offset (   v)    ((v) - RGN_BASE(RGN_GATE))

Definition at line 242 of file pgtable.h.

#define kern_addr_valid (   addr)    (1)

Definition at line 218 of file pgtable.h.

#define KERNEL_TR_PAGE_SHIFT   _PAGE_SIZE_64M

Definition at line 584 of file pgtable.h.

#define KERNEL_TR_PAGE_SIZE   (1 << KERNEL_TR_PAGE_SHIFT)

Definition at line 585 of file pgtable.h.

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

Definition at line 258 of file pgtable.h.

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

Definition at line 261 of file pgtable.h.

#define PAGE_COPY   __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_R)

Definition at line 143 of file pgtable.h.

#define PAGE_COPY_EXEC   __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_RX)

Definition at line 144 of file pgtable.h.

#define PAGE_GATE   __pgprot(__ACCESS_BITS | _PAGE_PL_0 | _PAGE_AR_X_RX)

Definition at line 145 of file pgtable.h.

#define PAGE_KERNEL   __pgprot(__DIRTY_BITS | _PAGE_PL_0 | _PAGE_AR_RWX)

Definition at line 146 of file pgtable.h.

#define PAGE_KERNEL_UC
Value:

Definition at line 148 of file pgtable.h.

#define PAGE_KERNELRX   __pgprot(__ACCESS_BITS | _PAGE_PL_0 | _PAGE_AR_RX)

Definition at line 147 of file pgtable.h.

#define PAGE_NONE   __pgprot(_PAGE_PROTNONE | _PAGE_A)

Definition at line 140 of file pgtable.h.

#define PAGE_READONLY   __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_R)

Definition at line 142 of file pgtable.h.

#define PAGE_SHARED   __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_RW)

Definition at line 141 of file pgtable.h.

#define pfn_pte (   pfn,
  pgprot 
)    ({ pte_t __pte; pte_val(__pte) = ((pfn) << PAGE_SHIFT) | pgprot_val(pgprot); __pte; })

Definition at line 252 of file pgtable.h.

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

Definition at line 185 of file pgtable.h.

#define pgd_offset_gate (   mm,
  addr 
)    pgd_offset_k(addr)

Definition at line 389 of file pgtable.h.

#define pgd_offset_k (   addr)    (init_mm.pgd + (((addr) >> PGDIR_SHIFT) & (PTRS_PER_PGD - 1)))

Definition at line 383 of file pgtable.h.

#define PGDIR_MASK   (~(PGDIR_SIZE-1))

Definition at line 129 of file pgtable.h.

#define PGDIR_SHIFT   (PMD_SHIFT + (PTRS_PER_PTD_SHIFT))

Definition at line 126 of file pgtable.h.

#define PGDIR_SIZE   (__IA64_UL(1) << PGDIR_SHIFT)

Definition at line 128 of file pgtable.h.

#define pgoff_to_pte (   off)    ((pte_t) { ((off) << 2) | _PAGE_FILE })

Definition at line 494 of file pgtable.h.

#define pgprot_cacheable (   prot)    __pgprot((pgprot_val(prot) & ~_PAGE_MA_MASK) | _PAGE_MA_WB)

Definition at line 355 of file pgtable.h.

#define pgprot_noncached (   prot)    __pgprot((pgprot_val(prot) & ~_PAGE_MA_MASK) | _PAGE_MA_UC)

Definition at line 356 of file pgtable.h.

#define pgprot_writecombine (   prot)    __pgprot((pgprot_val(prot) & ~_PAGE_MA_MASK) | _PAGE_MA_WC)

Definition at line 357 of file pgtable.h.

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

Definition at line 590 of file pgtable.h.

#define pmd_bad (   pmd)    (!ia64_phys_addr_valid(pmd_val(pmd)))

Definition at line 274 of file pgtable.h.

#define pmd_clear (   pmdp)    (pmd_val(*(pmdp)) = 0UL)

Definition at line 276 of file pgtable.h.

#define pmd_ERROR (   e)    printk("%s:%d: bad pmd %016lx.\n", __FILE__, __LINE__, pmd_val(e))

Definition at line 189 of file pgtable.h.

#define PMD_MASK   (~(PMD_SIZE-1))

Definition at line 102 of file pgtable.h.

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

Definition at line 273 of file pgtable.h.

#define pmd_offset (   dir,
  addr 
)    ((pmd_t *) pud_page_vaddr(*(dir)) + (((addr) >> PMD_SHIFT) & (PTRS_PER_PMD - 1)))

Definition at line 398 of file pgtable.h.

#define pmd_page (   pmd)    virt_to_page((pmd_val(pmd) + PAGE_OFFSET))

Definition at line 278 of file pgtable.h.

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

Definition at line 277 of file pgtable.h.

#define pmd_present (   pmd)    (pmd_val(pmd) != 0UL)

Definition at line 275 of file pgtable.h.

#define PMD_SHIFT   (PAGE_SHIFT + (PTRS_PER_PTD_SHIFT))

Definition at line 100 of file pgtable.h.

#define PMD_SIZE   (1UL << PMD_SHIFT)

Definition at line 101 of file pgtable.h.

#define pte_clear (   mm,
  addr,
  pte 
)    (pte_val(*(pte)) = 0UL)

Definition at line 269 of file pgtable.h.

#define pte_dirty (   pte)    ((pte_val(pte) & _PAGE_D) != 0)

Definition at line 301 of file pgtable.h.

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

Definition at line 190 of file pgtable.h.

#define pte_exec (   pte)    ((pte_val(pte) & _PAGE_AR_RX) != 0)

Definition at line 300 of file pgtable.h.

#define pte_file (   pte)    ((pte_val(pte) & _PAGE_FILE) != 0)

Definition at line 303 of file pgtable.h.

#define PTE_FILE_MAX_BITS   61

Definition at line 492 of file pgtable.h.

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

Definition at line 405 of file pgtable.h.

#define pte_mkclean (   pte)    (__pte(pte_val(pte) & ~_PAGE_D))

Definition at line 314 of file pgtable.h.

#define pte_mkdirty (   pte)    (__pte(pte_val(pte) | _PAGE_D))

Definition at line 315 of file pgtable.h.

#define pte_mkhuge (   pte)    (__pte(pte_val(pte)))

Definition at line 316 of file pgtable.h.

#define pte_mkold (   pte)    (__pte(pte_val(pte) & ~_PAGE_A))

Definition at line 312 of file pgtable.h.

#define pte_mkspecial (   pte)    (pte)

Definition at line 317 of file pgtable.h.

#define pte_mkwrite (   pte)    (__pte(pte_val(pte) | _PAGE_AR_RW))

Definition at line 311 of file pgtable.h.

#define pte_mkyoung (   pte)    (__pte(pte_val(pte) | _PAGE_A))

Definition at line 313 of file pgtable.h.

#define pte_modify (   _pte,
  newprot 
)    (__pte((pte_val(_pte) & ~_PAGE_CHG_MASK) | (pgprot_val(newprot) & _PAGE_CHG_MASK)))

Definition at line 264 of file pgtable.h.

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

Definition at line 267 of file pgtable.h.

#define pte_offset_kernel (   dir,
  addr 
)    ((pte_t *) pmd_page_vaddr(*(dir)) + pte_index(addr))

Definition at line 406 of file pgtable.h.

#define pte_offset_map (   dir,
  addr 
)    pte_offset_kernel(dir, addr)

Definition at line 407 of file pgtable.h.

#define pte_page (   pte)    virt_to_page(((pte_val(pte) & _PFN_MASK) + PAGE_OFFSET))

Definition at line 271 of file pgtable.h.

#define pte_pfn (   _pte)    ((pte_val(_pte) & _PFN_MASK) >> PAGE_SHIFT)

Definition at line 256 of file pgtable.h.

#define pte_present (   pte)    (pte_val(pte) & (_PAGE_P | _PAGE_PROTNONE))

Definition at line 268 of file pgtable.h.

#define pte_present_exec_user (   pte)
Value:

Definition at line 328 of file pgtable.h.

#define pte_special (   pte)    0

Definition at line 304 of file pgtable.h.

#define pte_to_pgoff (   pte)    ((pte_val(pte) << 1) >> 3)

Definition at line 493 of file pgtable.h.

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

Definition at line 408 of file pgtable.h.

#define pte_write (   pte)    ((unsigned) (((pte_val(pte) & _PAGE_AR_MASK) >> _PAGE_AR_SHIFT) - 2) <= 4)

Definition at line 299 of file pgtable.h.

#define pte_wrprotect (   pte)    (__pte(pte_val(pte) & ~_PAGE_AR_RW))

Definition at line 310 of file pgtable.h.

#define pte_young (   pte)    ((pte_val(pte) & _PAGE_A) != 0)

Definition at line 302 of file pgtable.h.

#define ptep_set_access_flags (   __vma,
  __addr,
  __ptep,
  __entry,
  __safely_writable 
)
Value:
({ \
int __changed = !pte_same(*(__ptep), __entry); \
if (__changed) { \
set_pte_at((__vma)->vm_mm, (__addr), __ptep, __entry); \
flush_tlb_page(__vma, __addr); \
} \
__changed; \
})

Definition at line 551 of file pgtable.h.

#define PTRS_PER_PGD   (1UL << PTRS_PER_PGD_SHIFT)

Definition at line 131 of file pgtable.h.

#define PTRS_PER_PGD_SHIFT   PTRS_PER_PTD_SHIFT

Definition at line 130 of file pgtable.h.

#define PTRS_PER_PMD   (1UL << (PTRS_PER_PTD_SHIFT))

Definition at line 103 of file pgtable.h.

#define PTRS_PER_PTD_SHIFT   (PAGE_SHIFT-3)

Definition at line 87 of file pgtable.h.

#define PTRS_PER_PTE   (__IA64_UL(1) << (PTRS_PER_PTD_SHIFT))

Definition at line 92 of file pgtable.h.

#define pud_bad (   pud)    (!ia64_phys_addr_valid(pud_val(pud)))

Definition at line 281 of file pgtable.h.

#define pud_clear (   pudp)    (pud_val(*(pudp)) = 0UL)

Definition at line 283 of file pgtable.h.

#define pud_none (   pud)    (!pud_val(pud))

Definition at line 280 of file pgtable.h.

#define pud_page (   pud)    virt_to_page((pud_val(pud) + PAGE_OFFSET))

Definition at line 285 of file pgtable.h.

#define pud_page_vaddr (   pud)    ((unsigned long) __va(pud_val(pud) & _PFN_MASK))

Definition at line 284 of file pgtable.h.

#define pud_present (   pud)    (pud_val(pud) != 0UL)

Definition at line 282 of file pgtable.h.

#define RGN_MAP_LIMIT   ((1UL << RGN_MAP_SHIFT) - PAGE_SIZE) /* per region addr limit */

Definition at line 246 of file pgtable.h.

#define RGN_MAP_SHIFT   (PGDIR_SHIFT + PTRS_PER_PGD_SHIFT - 3)

Definition at line 245 of file pgtable.h.

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

Definition at line 347 of file pgtable.h.

#define update_mmu_cache (   vma,
  address,
  ptep 
)    do { } while (0)

Definition at line 462 of file pgtable.h.

#define USER_PTRS_PER_PGD   (5*PTRS_PER_PGD/8) /* regions 0-4 are user regions */

Definition at line 132 of file pgtable.h.

#define VMALLOC_END   (RGN_BASE(RGN_GATE) + (1UL << (4*PAGE_SHIFT - 9)))

Definition at line 237 of file pgtable.h.

#define VMALLOC_START   (RGN_BASE(RGN_GATE) + 0x200000000UL)

Definition at line 227 of file pgtable.h.

#define ZERO_PAGE (   vaddr)    (zero_page_memmap_ptr)

Definition at line 505 of file pgtable.h.

Function Documentation

void __ia64_sync_icache_dcache ( pte_t  pteval)

Definition at line 54 of file init.c.

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.

pgprot_t phys_mem_access_prot ( struct file file,
unsigned long  pfn,
unsigned long  size,
pgprot_t  vma_prot 
)

Definition at line 151 of file mmu.c.

Variable Documentation

unsigned long empty_zero_page[PAGE_SIZE/sizeof(unsigned long)]

Definition at line 42 of file mmu.c.

pgd_t swapper_pg_dir[PTRS_PER_PGD]

Definition at line 36 of file init.c.

struct page* zero_page_memmap_ptr

Definition at line 50 of file init.c.