File: /Users/paulross/dev/linux/linux-3.13/arch/x86/include/asm/page_types.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       1: #ifndef _ASM_X86_PAGE_DEFS_H
       2: #define _ASM_X86_PAGE_DEFS_H
       3: 
       4: #include <linux/const.h>
       5: #include <linux/types.h>
       6: 
       7: /* PAGE_SHIFT determines the page size */
       8: #define PAGE_SHIFT    12
       9: #define PAGE_SIZE    (_AC(1,UL) << PAGE_SHIFT)
      10: #define PAGE_MASK    (~(PAGE_SIZE-1))
      11: 
      12: #define __PHYSICAL_MASK        ((phys_addr_t)((1ULL << __PHYSICAL_MASK_SHIFT) - 1))
      13: #define __VIRTUAL_MASK        ((1UL << __VIRTUAL_MASK_SHIFT) - 1)
      14: 
      15: /* Cast PAGE_MASK to a signed type so that it is sign-extended if
      16:    virtual addresses are 32-bits but physical addresses are larger
      17:    (ie, 32-bit PAE). */
      18: #define PHYSICAL_PAGE_MASK    (((signed long)PAGE_MASK) & __PHYSICAL_MASK)
      19: 
      20: #define PMD_PAGE_SIZE        (_AC(1, UL) << PMD_SHIFT)
      21: #define PMD_PAGE_MASK        (~(PMD_PAGE_SIZE-1))
      22: 
      23: #define HPAGE_SHIFT        PMD_SHIFT
      24: #define HPAGE_SIZE        (_AC(1,UL) << HPAGE_SHIFT)
      25: #define HPAGE_MASK        (~(HPAGE_SIZE - 1))
      26: #define HUGETLB_PAGE_ORDER    (HPAGE_SHIFT - PAGE_SHIFT)
      27: 
      28: #define HUGE_MAX_HSTATE 2
      29: 
      30: #define PAGE_OFFSET        ((unsigned long)__PAGE_OFFSET)
      31: 
      32: #define VM_DATA_DEFAULT_FLAGS \
      33:     (((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0 ) | \
      34:      VM_READ | VM_WRITE | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
      35: 
      36: #define __PHYSICAL_START    ALIGN(CONFIG_PHYSICAL_START, \
      37:                       CONFIG_PHYSICAL_ALIGN)
      38: 
      39: #define __START_KERNEL        (__START_KERNEL_map + __PHYSICAL_START)
      40: 
      41: #ifdef CONFIG_X86_64
      42: #include <asm/page_64_types.h>
      43: #else
      44: #include <asm/page_32_types.h>
      45: #endif    /* CONFIG_X86_64 */
      46: 
      47: #ifndef __ASSEMBLY__
      48: 
      49: extern int devmem_is_allowed(unsigned long pagenr);
      50: 
      51: extern unsigned long max_low_pfn_mapped;
      52: extern unsigned long max_pfn_mapped;
      53: 
      54: static inline phys_addr_t get_max_mapped(void)
      55: {
      56:     return (phys_addr_t)max_pfn_mapped << PAGE_SHIFT;
      57: }
      58: 
      59: bool pfn_range_is_mapped(unsigned long start_pfn, unsigned long end_pfn);
      60: 
      61: extern unsigned long init_memory_mapping(unsigned long start,
      62:                      unsigned long end);
      63: 
      64: extern void initmem_init(void);
      65: 
      66: #endif    /* !__ASSEMBLY__ */
      67: 
      68: #endif    /* _ASM_X86_PAGE_DEFS_H */
      69: