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