page.h revision 1965aae3c98397aad957412413c07e97b1bd4e64
11965aae3c98397aad957412413c07e97b1bd4e64H. Peter Anvin#ifndef _ASM_X86_PAGE_H 21965aae3c98397aad957412413c07e97b1bd4e64H. Peter Anvin#define _ASM_X86_PAGE_H 383a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge 483a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge#include <linux/const.h> 583a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge 683a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge/* PAGE_SHIFT determines the page size */ 783a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge#define PAGE_SHIFT 12 883a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge#define PAGE_SIZE (_AC(1,UL) << PAGE_SHIFT) 983a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge#define PAGE_MASK (~(PAGE_SIZE-1)) 1083a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge 1111b7c7dc945b8802c459baa3304c1b501d2bf872Jeremy Fitzhardinge#ifdef __KERNEL__ 1211b7c7dc945b8802c459baa3304c1b501d2bf872Jeremy Fitzhardinge 13c57c05d0032cd5a500c5eba18ede4867a6d2cd5fJeremy Fitzhardinge#define __PHYSICAL_MASK ((phys_addr_t)(1ULL << __PHYSICAL_MASK_SHIFT) - 1) 14c57c05d0032cd5a500c5eba18ede4867a6d2cd5fJeremy Fitzhardinge#define __VIRTUAL_MASK ((1UL << __VIRTUAL_MASK_SHIFT) - 1) 15c57c05d0032cd5a500c5eba18ede4867a6d2cd5fJeremy Fitzhardinge 162bd3a99c9d1851182f73d0a024dc5bdb0a470e8cJeremy Fitzhardinge/* Cast PAGE_MASK to a signed type so that it is sign-extended if 172bd3a99c9d1851182f73d0a024dc5bdb0a470e8cJeremy Fitzhardinge virtual addresses are 32-bits but physical addresses are larger 182bd3a99c9d1851182f73d0a024dc5bdb0a470e8cJeremy Fitzhardinge (ie, 32-bit PAE). */ 192bd3a99c9d1851182f73d0a024dc5bdb0a470e8cJeremy Fitzhardinge#define PHYSICAL_PAGE_MASK (((signed long)PAGE_MASK) & __PHYSICAL_MASK) 202bd3a99c9d1851182f73d0a024dc5bdb0a470e8cJeremy Fitzhardinge 2159438c9fc4f7a92c808c9049bc6b396f98bf954cJeremy Fitzhardinge/* PTE_PFN_MASK extracts the PFN from a (pte|pmd|pud|pgd)val_t */ 2259438c9fc4f7a92c808c9049bc6b396f98bf954cJeremy Fitzhardinge#define PTE_PFN_MASK ((pteval_t)PHYSICAL_PAGE_MASK) 2383a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge 2477be1fabd024b37423d12f832b1fbdb95dbdf494Jeremy Fitzhardinge/* PTE_FLAGS_MASK extracts the flags from a (pte|pmd|pud|pgd)val_t */ 2577be1fabd024b37423d12f832b1fbdb95dbdf494Jeremy Fitzhardinge#define PTE_FLAGS_MASK (~PTE_PFN_MASK) 2677be1fabd024b37423d12f832b1fbdb95dbdf494Jeremy Fitzhardinge 2731422c51e0dc72532d82e80895932d430c3ed307Andi Kleen#define PMD_PAGE_SIZE (_AC(1, UL) << PMD_SHIFT) 2831422c51e0dc72532d82e80895932d430c3ed307Andi Kleen#define PMD_PAGE_MASK (~(PMD_PAGE_SIZE-1)) 2983a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge 3083a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge#define HPAGE_SHIFT PMD_SHIFT 3183a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge#define HPAGE_SIZE (_AC(1,UL) << HPAGE_SHIFT) 3283a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge#define HPAGE_MASK (~(HPAGE_SIZE - 1)) 3383a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge#define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT) 3483a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge 35b4718e628dbf68a2dee23b5709e2aa3190409c56Andi Kleen#define HUGE_MAX_HSTATE 2 36b4718e628dbf68a2dee23b5709e2aa3190409c56Andi Kleen 373da1bcc2659de27094592e5a037d0b1d59351e03Ingo Molnar#ifndef __ASSEMBLY__ 383da1bcc2659de27094592e5a037d0b1d59351e03Ingo Molnar#include <linux/types.h> 393da1bcc2659de27094592e5a037d0b1d59351e03Ingo Molnar#endif 4083a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge 4183a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge#ifdef CONFIG_X86_64 4211b7c7dc945b8802c459baa3304c1b501d2bf872Jeremy Fitzhardinge#include <asm/page_64.h> 4311b7c7dc945b8802c459baa3304c1b501d2bf872Jeremy Fitzhardinge#else 4411b7c7dc945b8802c459baa3304c1b501d2bf872Jeremy Fitzhardinge#include <asm/page_32.h> 4583a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge#endif /* CONFIG_X86_64 */ 4683a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge 4783a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge#define PAGE_OFFSET ((unsigned long)__PAGE_OFFSET) 4883a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge 4983a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge#define VM_DATA_DEFAULT_FLAGS \ 5083a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge (((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0 ) | \ 5183a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge VM_READ | VM_WRITE | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) 5283a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge 5383a5101bf2fa7dcf09ffd436078a021d32c97f85Jeremy Fitzhardinge 54345b904c3f7c24fbfadfee7cddd5896d13b176d9Jeremy Fitzhardinge#ifndef __ASSEMBLY__ 555f5192b9feeff6a96c97c143c3ca558fdbe2dc8eThomas Gleixner 56635ee418381566f03819408e1303ef21fcf2d41cThomas Gleixnertypedef struct { pgdval_t pgd; } pgd_t; 57635ee418381566f03819408e1303ef21fcf2d41cThomas Gleixnertypedef struct { pgprotval_t pgprot; } pgprot_t; 58635ee418381566f03819408e1303ef21fcf2d41cThomas Gleixner 595f5192b9feeff6a96c97c143c3ca558fdbe2dc8eThomas Gleixnerextern int page_is_ram(unsigned long pagenr); 609542ada803198e6eba29d3289abb39ea82047b92Suresh Siddhaextern int pagerange_is_ram(unsigned long start, unsigned long end); 61ae531c26c5c2a28ca1b35a75b39b3b256850f2c8Arjan van de Venextern int devmem_is_allowed(unsigned long pagenr); 62635ee418381566f03819408e1303ef21fcf2d41cThomas Gleixnerextern void map_devmem(unsigned long pfn, unsigned long size, 63635ee418381566f03819408e1303ef21fcf2d41cThomas Gleixner pgprot_t vma_prot); 64635ee418381566f03819408e1303ef21fcf2d41cThomas Gleixnerextern void unmap_devmem(unsigned long pfn, unsigned long size, 65635ee418381566f03819408e1303ef21fcf2d41cThomas Gleixner pgprot_t vma_prot); 665f5192b9feeff6a96c97c143c3ca558fdbe2dc8eThomas Gleixner 67f361a450bf1ad14e2b003217dbf3958638631265Yinghai Luextern unsigned long max_low_pfn_mapped; 6867794292c8615b05f46419ba8d4fd99e7c9a5db9Thomas Gleixnerextern unsigned long max_pfn_mapped; 697d1116a92d709c22e7db910724c9fcd2001b0499Andi Kleen 70345b904c3f7c24fbfadfee7cddd5896d13b176d9Jeremy Fitzhardingestruct page; 71345b904c3f7c24fbfadfee7cddd5896d13b176d9Jeremy Fitzhardinge 72f2f7abcb96f03a7a42c13063ad556fc80e345c71Chuck Leverstatic inline void clear_user_page(void *page, unsigned long vaddr, 73345b904c3f7c24fbfadfee7cddd5896d13b176d9Jeremy Fitzhardinge struct page *pg) 74345b904c3f7c24fbfadfee7cddd5896d13b176d9Jeremy Fitzhardinge{ 75345b904c3f7c24fbfadfee7cddd5896d13b176d9Jeremy Fitzhardinge clear_page(page); 76345b904c3f7c24fbfadfee7cddd5896d13b176d9Jeremy Fitzhardinge} 77345b904c3f7c24fbfadfee7cddd5896d13b176d9Jeremy Fitzhardinge 78f2f7abcb96f03a7a42c13063ad556fc80e345c71Chuck Leverstatic inline void copy_user_page(void *to, void *from, unsigned long vaddr, 79345b904c3f7c24fbfadfee7cddd5896d13b176d9Jeremy Fitzhardinge struct page *topage) 80345b904c3f7c24fbfadfee7cddd5896d13b176d9Jeremy Fitzhardinge{ 81345b904c3f7c24fbfadfee7cddd5896d13b176d9Jeremy Fitzhardinge copy_page(to, from); 82345b904c3f7c24fbfadfee7cddd5896d13b176d9Jeremy Fitzhardinge} 83345b904c3f7c24fbfadfee7cddd5896d13b176d9Jeremy Fitzhardinge 84345b904c3f7c24fbfadfee7cddd5896d13b176d9Jeremy Fitzhardinge#define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \ 85345b904c3f7c24fbfadfee7cddd5896d13b176d9Jeremy Fitzhardinge alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr) 86345b904c3f7c24fbfadfee7cddd5896d13b176d9Jeremy Fitzhardinge#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE 87345b904c3f7c24fbfadfee7cddd5896d13b176d9Jeremy Fitzhardinge 8838f0f12793a490ac633dbba2418172b7abfa077eIngo Molnarstatic inline pgd_t native_make_pgd(pgdval_t val) 8938f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar{ 9038f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar return (pgd_t) { val }; 9138f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar} 9238f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar 9338f0f12793a490ac633dbba2418172b7abfa077eIngo Molnarstatic inline pgdval_t native_pgd_val(pgd_t pgd) 9438f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar{ 9538f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar return pgd.pgd; 9638f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar} 9738f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar 9838f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#if PAGETABLE_LEVELS >= 3 9938f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#if PAGETABLE_LEVELS == 4 10038f0f12793a490ac633dbba2418172b7abfa077eIngo Molnartypedef struct { pudval_t pud; } pud_t; 10138f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar 10238f0f12793a490ac633dbba2418172b7abfa077eIngo Molnarstatic inline pud_t native_make_pud(pmdval_t val) 10338f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar{ 10438f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar return (pud_t) { val }; 10538f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar} 10638f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar 10738f0f12793a490ac633dbba2418172b7abfa077eIngo Molnarstatic inline pudval_t native_pud_val(pud_t pud) 10838f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar{ 10938f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar return pud.pud; 11038f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar} 11138f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#else /* PAGETABLE_LEVELS == 3 */ 11238f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#include <asm-generic/pgtable-nopud.h> 1132f98b2faac1b5fec327edbde945cdf7f7a53f351Jeremy Fitzhardinge 1142f98b2faac1b5fec327edbde945cdf7f7a53f351Jeremy Fitzhardingestatic inline pudval_t native_pud_val(pud_t pud) 1152f98b2faac1b5fec327edbde945cdf7f7a53f351Jeremy Fitzhardinge{ 1162f98b2faac1b5fec327edbde945cdf7f7a53f351Jeremy Fitzhardinge return native_pgd_val(pud.pgd); 1172f98b2faac1b5fec327edbde945cdf7f7a53f351Jeremy Fitzhardinge} 11838f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#endif /* PAGETABLE_LEVELS == 4 */ 11938f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar 12038f0f12793a490ac633dbba2418172b7abfa077eIngo Molnartypedef struct { pmdval_t pmd; } pmd_t; 12138f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar 12238f0f12793a490ac633dbba2418172b7abfa077eIngo Molnarstatic inline pmd_t native_make_pmd(pmdval_t val) 12338f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar{ 12438f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar return (pmd_t) { val }; 12538f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar} 12638f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar 12738f0f12793a490ac633dbba2418172b7abfa077eIngo Molnarstatic inline pmdval_t native_pmd_val(pmd_t pmd) 12838f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar{ 12938f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar return pmd.pmd; 13038f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar} 13138f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#else /* PAGETABLE_LEVELS == 2 */ 13238f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#include <asm-generic/pgtable-nopmd.h> 1332f98b2faac1b5fec327edbde945cdf7f7a53f351Jeremy Fitzhardinge 1342f98b2faac1b5fec327edbde945cdf7f7a53f351Jeremy Fitzhardingestatic inline pmdval_t native_pmd_val(pmd_t pmd) 1352f98b2faac1b5fec327edbde945cdf7f7a53f351Jeremy Fitzhardinge{ 1362f98b2faac1b5fec327edbde945cdf7f7a53f351Jeremy Fitzhardinge return native_pgd_val(pmd.pud.pgd); 1372f98b2faac1b5fec327edbde945cdf7f7a53f351Jeremy Fitzhardinge} 13838f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#endif /* PAGETABLE_LEVELS >= 3 */ 13938f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar 140c8e5393ab38564d2f45b560a2f95bc8f9ff6f823Jeremy Fitzhardingestatic inline pte_t native_make_pte(pteval_t val) 141c8e5393ab38564d2f45b560a2f95bc8f9ff6f823Jeremy Fitzhardinge{ 142c8e5393ab38564d2f45b560a2f95bc8f9ff6f823Jeremy Fitzhardinge return (pte_t) { .pte = val }; 143c8e5393ab38564d2f45b560a2f95bc8f9ff6f823Jeremy Fitzhardinge} 144c8e5393ab38564d2f45b560a2f95bc8f9ff6f823Jeremy Fitzhardinge 145c8e5393ab38564d2f45b560a2f95bc8f9ff6f823Jeremy Fitzhardingestatic inline pteval_t native_pte_val(pte_t pte) 146c8e5393ab38564d2f45b560a2f95bc8f9ff6f823Jeremy Fitzhardinge{ 147c8e5393ab38564d2f45b560a2f95bc8f9ff6f823Jeremy Fitzhardinge return pte.pte; 148c8e5393ab38564d2f45b560a2f95bc8f9ff6f823Jeremy Fitzhardinge} 149c8e5393ab38564d2f45b560a2f95bc8f9ff6f823Jeremy Fitzhardinge 150c2e3277f875b83e5adc34e96989d6d87ec5f80f7Rusty Russellstatic inline pteval_t native_pte_flags(pte_t pte) 151c2e3277f875b83e5adc34e96989d6d87ec5f80f7Rusty Russell{ 15277be1fabd024b37423d12f832b1fbdb95dbdf494Jeremy Fitzhardinge return native_pte_val(pte) & PTE_FLAGS_MASK; 153c2e3277f875b83e5adc34e96989d6d87ec5f80f7Rusty Russell} 154c2e3277f875b83e5adc34e96989d6d87ec5f80f7Rusty Russell 15538f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#define pgprot_val(x) ((x).pgprot) 15638f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#define __pgprot(x) ((pgprot_t) { (x) } ) 15738f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar 15838f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#ifdef CONFIG_PARAVIRT 15938f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#include <asm/paravirt.h> 16038f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#else /* !CONFIG_PARAVIRT */ 16138f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar 16238f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#define pgd_val(x) native_pgd_val(x) 16338f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#define __pgd(x) native_make_pgd(x) 16438f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar 16538f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#ifndef __PAGETABLE_PUD_FOLDED 16638f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#define pud_val(x) native_pud_val(x) 16738f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#define __pud(x) native_make_pud(x) 16838f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#endif 16938f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar 17038f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#ifndef __PAGETABLE_PMD_FOLDED 17138f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#define pmd_val(x) native_pmd_val(x) 17238f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#define __pmd(x) native_make_pmd(x) 17338f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#endif 17438f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar 17538f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#define pte_val(x) native_pte_val(x) 176c2e3277f875b83e5adc34e96989d6d87ec5f80f7Rusty Russell#define pte_flags(x) native_pte_flags(x) 17738f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#define __pte(x) native_make_pte(x) 17838f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar 17938f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar#endif /* CONFIG_PARAVIRT */ 18038f0f12793a490ac633dbba2418172b7abfa077eIngo Molnar 18198fd5aee348f0420afd1c636790d50aaaec6ceecJeremy Fitzhardinge#define __pa(x) __phys_addr((unsigned long)(x)) 182af5c2bd16ac2e5688c3bf46ea1f95112d696d294Vegard Nossum#define __pa_nodebug(x) __phys_addr_nodebug((unsigned long)(x)) 18398fd5aee348f0420afd1c636790d50aaaec6ceecJeremy Fitzhardinge/* __pa_symbol should be used for C visible symbols. 18498fd5aee348f0420afd1c636790d50aaaec6ceecJeremy Fitzhardinge This seems to be the official gcc blessed way to do such arithmetic. */ 18598fd5aee348f0420afd1c636790d50aaaec6ceecJeremy Fitzhardinge#define __pa_symbol(x) __pa(__phys_reloc_hide((unsigned long)(x))) 18698fd5aee348f0420afd1c636790d50aaaec6ceecJeremy Fitzhardinge 18798fd5aee348f0420afd1c636790d50aaaec6ceecJeremy Fitzhardinge#define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET)) 18898fd5aee348f0420afd1c636790d50aaaec6ceecJeremy Fitzhardinge 18998fd5aee348f0420afd1c636790d50aaaec6ceecJeremy Fitzhardinge#define __boot_va(x) __va(x) 19098fd5aee348f0420afd1c636790d50aaaec6ceecJeremy Fitzhardinge#define __boot_pa(x) __pa(x) 19198fd5aee348f0420afd1c636790d50aaaec6ceecJeremy Fitzhardinge 192af5c2bd16ac2e5688c3bf46ea1f95112d696d294Vegard Nossum/* 193af5c2bd16ac2e5688c3bf46ea1f95112d696d294Vegard Nossum * virt_to_page(kaddr) returns a valid pointer if and only if 194af5c2bd16ac2e5688c3bf46ea1f95112d696d294Vegard Nossum * virt_addr_valid(kaddr) returns true. 195af5c2bd16ac2e5688c3bf46ea1f95112d696d294Vegard Nossum */ 19698fd5aee348f0420afd1c636790d50aaaec6ceecJeremy Fitzhardinge#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) 19798fd5aee348f0420afd1c636790d50aaaec6ceecJeremy Fitzhardinge#define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT) 198af5c2bd16ac2e5688c3bf46ea1f95112d696d294Vegard Nossumextern bool __virt_addr_valid(unsigned long kaddr); 199af5c2bd16ac2e5688c3bf46ea1f95112d696d294Vegard Nossum#define virt_addr_valid(kaddr) __virt_addr_valid((unsigned long) (kaddr)) 20098fd5aee348f0420afd1c636790d50aaaec6ceecJeremy Fitzhardinge 201345b904c3f7c24fbfadfee7cddd5896d13b176d9Jeremy Fitzhardinge#endif /* __ASSEMBLY__ */ 202345b904c3f7c24fbfadfee7cddd5896d13b176d9Jeremy Fitzhardinge 203e62f4473f32a882a537b32cb7202da8d5d7c4f1fJeremy Fitzhardinge#include <asm-generic/memory_model.h> 204e62f4473f32a882a537b32cb7202da8d5d7c4f1fJeremy Fitzhardinge#include <asm-generic/page.h> 205e62f4473f32a882a537b32cb7202da8d5d7c4f1fJeremy Fitzhardinge 206e62f4473f32a882a537b32cb7202da8d5d7c4f1fJeremy Fitzhardinge#define __HAVE_ARCH_GATE_AREA 1 207345b904c3f7c24fbfadfee7cddd5896d13b176d9Jeremy Fitzhardinge 20811b7c7dc945b8802c459baa3304c1b501d2bf872Jeremy Fitzhardinge#endif /* __KERNEL__ */ 2091965aae3c98397aad957412413c07e97b1bd4e64H. Peter Anvin#endif /* _ASM_X86_PAGE_H */ 210