1
2#ifndef _ASM_X86_PAGE_H
3#define _ASM_X86_PAGE_H
4
5#include <linux/types.h>
6
7#ifdef __KERNEL__
8
9#include <asm/page_types.h>
10
11#ifdef CONFIG_X86_64
12#include <asm/page_64.h>
13#else
14#include <asm/page_32.h>
15#endif
16
17#ifndef __ASSEMBLY__
18
19struct page;
20
21#include <linux/range.h>
22extern struct range pfn_mapped[];
23extern int nr_pfn_mapped;
24
25static inline void clear_user_page(void *page, unsigned long vaddr,
26 struct page *pg)
27{
28 clear_page(page);
29}
30
31static inline void copy_user_page(void *to, void *from, unsigned long vaddr,
32 struct page *topage)
33{
34 copy_page(to, from);
35}
36
37#define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \
38 alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr)
39#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
40
41#ifndef __pa
42#define __pa(x) __phys_addr((unsigned long)(x))
43#endif
44
45#define __pa_nodebug(x) __phys_addr_nodebug((unsigned long)(x))
46
47
48
49
50
51
52
53
54
55#define __pa_symbol(x) \
56 __phys_addr_symbol(__phys_reloc_hide((unsigned long)(x)))
57
58#ifndef __va
59#define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET))
60#endif
61
62#define __boot_va(x) __va(x)
63#define __boot_pa(x) __pa(x)
64
65
66
67
68
69#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
70#define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT)
71extern bool __virt_addr_valid(unsigned long kaddr);
72#define virt_addr_valid(kaddr) __virt_addr_valid((unsigned long) (kaddr))
73
74#endif
75
76#include <asm-generic/memory_model.h>
77#include <asm-generic/getorder.h>
78
79#define HAVE_ARCH_HUGETLB_UNMAPPED_AREA
80
81#endif
82#endif
83