1c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef _I386_PAGE_H 2c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define _I386_PAGE_H 3c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 4c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* PAGE_SHIFT determines the page size */ 5c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define PAGE_SHIFT 12 6c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define PAGE_SIZE (1UL << PAGE_SHIFT) 7c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define PAGE_MASK (~(PAGE_SIZE-1)) 8c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 9c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define LARGE_PAGE_MASK (~(LARGE_PAGE_SIZE-1)) 10c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define LARGE_PAGE_SIZE (1UL << PMD_SHIFT) 11c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 12c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef __KERNEL__ 13c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __ASSEMBLY__ 14c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 15c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef CONFIG_X86_USE_3DNOW 16c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 17c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#include <asm/mmx.h> 18c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 19c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define clear_page(page) mmx_clear_page((void *)(page)) 20c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define copy_page(to,from) mmx_copy_page(to,from) 21c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 22c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#else 23c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 24c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 25c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * On older X86 processors it's not a win to use MMX here it seems. 26c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Maybe the K6-III ? 27c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 28c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 29c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define clear_page(page) memset((void *)(page), 0, PAGE_SIZE) 30c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define copy_page(to,from) memcpy((void *)(to), (void *)(from), PAGE_SIZE) 31c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 32c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif 33c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 34c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define clear_user_page(page, vaddr, pg) clear_page(page) 35c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define copy_user_page(to, from, vaddr, pg) copy_page(to, from) 36c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 37c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \ 38c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr) 39c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE 40c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 41c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 42c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * These are used to make use of C type-checking.. 43c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 44c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern int nx_enabled; 45c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 46c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef CONFIG_X86_PAE 47c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef struct { unsigned long pte_low, pte_high; } pte_t; 48c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef struct { unsigned long long pmd; } pmd_t; 49c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef struct { unsigned long long pgd; } pgd_t; 50c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef struct { unsigned long long pgprot; } pgprot_t; 51c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 52c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustatic inline unsigned long long native_pgd_val(pgd_t pgd) 53c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru{ 54c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru return pgd.pgd; 55c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru} 56c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 57c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustatic inline unsigned long long native_pmd_val(pmd_t pmd) 58c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru{ 59c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru return pmd.pmd; 60c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru} 61c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 62c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustatic inline unsigned long long native_pte_val(pte_t pte) 63c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru{ 64c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru return pte.pte_low | ((unsigned long long)pte.pte_high << 32); 65c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru} 66c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 67c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustatic inline pgd_t native_make_pgd(unsigned long long val) 68c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru{ 69c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru return (pgd_t) { val }; 70c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru} 71c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 72c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustatic inline pmd_t native_make_pmd(unsigned long long val) 73c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru{ 74c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru return (pmd_t) { val }; 75c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru} 76c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 77c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustatic inline pte_t native_make_pte(unsigned long long val) 78c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru{ 79c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru return (pte_t) { .pte_low = val, .pte_high = (val >> 32) } ; 80c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru} 81c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 82c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef CONFIG_PARAVIRT 83c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define pmd_val(x) native_pmd_val(x) 84c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define __pmd(x) native_make_pmd(x) 85c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif 86c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 87c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define HPAGE_SHIFT 21 88c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#include <asm-generic/pgtable-nopud.h> 89c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#else /* !CONFIG_X86_PAE */ 90c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef struct { unsigned long pte_low; } pte_t; 91c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef struct { unsigned long pgd; } pgd_t; 92c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef struct { unsigned long pgprot; } pgprot_t; 93c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define boot_pte_t pte_t /* or would you rather have a typedef */ 94c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 95c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustatic inline unsigned long native_pgd_val(pgd_t pgd) 96c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru{ 97c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru return pgd.pgd; 98c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru} 99c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 100c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustatic inline unsigned long native_pte_val(pte_t pte) 101c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru{ 102c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru return pte.pte_low; 103c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru} 104c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 105c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustatic inline pgd_t native_make_pgd(unsigned long val) 106c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru{ 107c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru return (pgd_t) { val }; 108c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru} 109c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 110c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustatic inline pte_t native_make_pte(unsigned long val) 111c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru{ 112c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru return (pte_t) { .pte_low = val }; 113c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru} 114c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 115c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define HPAGE_SHIFT 22 116c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#include <asm-generic/pgtable-nopmd.h> 117c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif /* CONFIG_X86_PAE */ 118c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 119c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define PTE_MASK PAGE_MASK 120c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 121c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef CONFIG_HUGETLB_PAGE 122c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define HPAGE_SIZE ((1UL) << HPAGE_SHIFT) 123c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define HPAGE_MASK (~(HPAGE_SIZE - 1)) 124c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT) 125c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define HAVE_ARCH_HUGETLB_UNMAPPED_AREA 126c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif 127c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 128c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define pgprot_val(x) ((x).pgprot) 129c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define __pgprot(x) ((pgprot_t) { (x) } ) 130c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 131c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef CONFIG_PARAVIRT 132c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define pgd_val(x) native_pgd_val(x) 133c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define __pgd(x) native_make_pgd(x) 134c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define pte_val(x) native_pte_val(x) 135c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define __pte(x) native_make_pte(x) 136c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif 137c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 138c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif /* !__ASSEMBLY__ */ 139c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 140c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* to align the pointer to the (next) page boundary */ 141c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK) 142c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 143c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 144c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * This handles the memory map.. We could make this a config 145c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * option, but too many people screw it up, and too few need 146c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * it. 147c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * 148c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * A __PAGE_OFFSET of 0xC0000000 means that the kernel has 149c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * a virtual address space of one gigabyte, which limits the 150c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * amount of physical memory you can use to about 950MB. 151c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * 152c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * If you want more physical memory than this then see the CONFIG_HIGHMEM4G 153c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * and CONFIG_HIGHMEM64G options in the kernel configuration. 154c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 155c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 156c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __ASSEMBLY__ 157c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 158c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct vm_area_struct; 159c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 160c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 161c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * This much address space is reserved for vmalloc() and iomap() 162c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * as well as fixmap mappings. 163c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 164c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern unsigned int __VMALLOC_RESERVE; 165c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 166c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern int sysctl_legacy_va_layout; 167c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 168c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern int page_is_ram(unsigned long pagenr); 169c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 170c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif /* __ASSEMBLY__ */ 171c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 172c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef __ASSEMBLY__ 173c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define __PAGE_OFFSET CONFIG_PAGE_OFFSET 174c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#else 175c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define __PAGE_OFFSET ((unsigned long)CONFIG_PAGE_OFFSET) 176c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif 177c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 178c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 179c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define PAGE_OFFSET ((unsigned long)__PAGE_OFFSET) 180c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define VMALLOC_RESERVE ((unsigned long)__VMALLOC_RESERVE) 181c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define MAXMEM (-__PAGE_OFFSET-__VMALLOC_RESERVE) 182c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define __pa(x) ((unsigned long)(x)-PAGE_OFFSET) 183c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* __pa_symbol should be used for C visible symbols. 184c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru This seems to be the official gcc blessed way to do such arithmetic. */ 185c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define __pa_symbol(x) __pa(RELOC_HIDE((unsigned long)(x),0)) 186c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET)) 187c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT) 188c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef CONFIG_FLATMEM 189c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define pfn_valid(pfn) ((pfn) < max_mapnr) 190c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif /* CONFIG_FLATMEM */ 191c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) 192c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 193c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) 194c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 195c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define VM_DATA_DEFAULT_FLAGS \ 196c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru (VM_READ | VM_WRITE | \ 197c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru ((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0 ) | \ 198c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) 199c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 200c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#include <asm-generic/memory_model.h> 201c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#include <asm-generic/page.h> 202c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 203c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define __HAVE_ARCH_GATE_AREA 1 204c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif /* __KERNEL__ */ 205c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 206c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif /* _I386_PAGE_H */ 207