linux/arch/x86/include/asm/pgtable_64_types.h
<<
>>
Prefs
   1#ifndef _ASM_X86_PGTABLE_64_DEFS_H
   2#define _ASM_X86_PGTABLE_64_DEFS_H
   3
   4#ifndef __ASSEMBLY__
   5#include <linux/types.h>
   6
   7/*
   8 * These are used to make use of C type-checking..
   9 */
  10typedef unsigned long   pteval_t;
  11typedef unsigned long   pmdval_t;
  12typedef unsigned long   pudval_t;
  13typedef unsigned long   pgdval_t;
  14typedef unsigned long   pgprotval_t;
  15
  16typedef struct { pteval_t pte; } pte_t;
  17
  18#endif  /* !__ASSEMBLY__ */
  19
  20#define SHARED_KERNEL_PMD       0
  21#define PAGETABLE_LEVELS        4
  22
  23/*
  24 * PGDIR_SHIFT determines what a top-level page table entry can map
  25 */
  26#define PGDIR_SHIFT     39
  27#define PTRS_PER_PGD    512
  28
  29/*
  30 * 3rd level page
  31 */
  32#define PUD_SHIFT       30
  33#define PTRS_PER_PUD    512
  34
  35/*
  36 * PMD_SHIFT determines the size of the area a middle-level
  37 * page table can map
  38 */
  39#define PMD_SHIFT       21
  40#define PTRS_PER_PMD    512
  41
  42/*
  43 * entries per page directory level
  44 */
  45#define PTRS_PER_PTE    512
  46
  47#define PMD_SIZE        (_AC(1, UL) << PMD_SHIFT)
  48#define PMD_MASK        (~(PMD_SIZE - 1))
  49#define PUD_SIZE        (_AC(1, UL) << PUD_SHIFT)
  50#define PUD_MASK        (~(PUD_SIZE - 1))
  51#define PGDIR_SIZE      (_AC(1, UL) << PGDIR_SHIFT)
  52#define PGDIR_MASK      (~(PGDIR_SIZE - 1))
  53
  54/* See Documentation/x86/x86_64/mm.txt for a description of the memory map. */
  55#define MAXMEM           _AC(__AC(1, UL) << MAX_PHYSMEM_BITS, UL)
  56#define VMALLOC_START    _AC(0xffffc90000000000, UL)
  57#define VMALLOC_END      _AC(0xffffe8ffffffffff, UL)
  58#define VMEMMAP_START    _AC(0xffffea0000000000, UL)
  59#define MODULES_VADDR    _AC(0xffffffffa0000000, UL)
  60#define MODULES_END      _AC(0xffffffffff000000, UL)
  61#define MODULES_LEN   (MODULES_END - MODULES_VADDR)
  62
  63#endif /* _ASM_X86_PGTABLE_64_DEFS_H */
  64