diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-x86/page.h | 55 | ||||
-rw-r--r-- | include/asm-x86/page_32.h | 53 | ||||
-rw-r--r-- | include/asm-x86/page_64.h | 20 |
3 files changed, 55 insertions, 73 deletions
diff --git a/include/asm-x86/page.h b/include/asm-x86/page.h index e0fa4a032ea7..2ebb6977e00c 100644 --- a/include/asm-x86/page.h +++ b/include/asm-x86/page.h | |||
@@ -70,6 +70,11 @@ | |||
70 | #define KERNEL_TEXT_SIZE (40*1024*1024) | 70 | #define KERNEL_TEXT_SIZE (40*1024*1024) |
71 | #define KERNEL_TEXT_START _AC(0xffffffff80000000, UL) | 71 | #define KERNEL_TEXT_START _AC(0xffffffff80000000, UL) |
72 | 72 | ||
73 | #ifndef __ASSEMBLY__ | ||
74 | void clear_page(void *page); | ||
75 | void copy_page(void *to, void *from); | ||
76 | #endif /* !__ASSEMBLY__ */ | ||
77 | |||
73 | #endif /* CONFIG_X86_64 */ | 78 | #endif /* CONFIG_X86_64 */ |
74 | 79 | ||
75 | #ifdef CONFIG_X86_32 | 80 | #ifdef CONFIG_X86_32 |
@@ -98,6 +103,34 @@ | |||
98 | #define HAVE_ARCH_HUGETLB_UNMAPPED_AREA | 103 | #define HAVE_ARCH_HUGETLB_UNMAPPED_AREA |
99 | #endif | 104 | #endif |
100 | 105 | ||
106 | #ifndef __ASSEMBLY__ | ||
107 | #ifdef CONFIG_X86_USE_3DNOW | ||
108 | #include <asm/mmx.h> | ||
109 | |||
110 | static inline void clear_page(void *page) | ||
111 | { | ||
112 | mmx_clear_page(page); | ||
113 | } | ||
114 | |||
115 | static inline void copy_page(void *to, void *from) | ||
116 | { | ||
117 | mmx_copy_page(to, from); | ||
118 | } | ||
119 | #else /* !CONFIG_X86_USE_3DNOW */ | ||
120 | #include <linux/string.h> | ||
121 | |||
122 | static inline void clear_page(void *page) | ||
123 | { | ||
124 | memset(page, 0, PAGE_SIZE); | ||
125 | } | ||
126 | |||
127 | static inline void copy_page(void *to, void *from) | ||
128 | { | ||
129 | memcpy(to, from, PAGE_SIZE); | ||
130 | } | ||
131 | #endif /* CONFIG_X86_3DNOW */ | ||
132 | #endif /* !__ASSEMBLY__ */ | ||
133 | |||
101 | #endif /* CONFIG_X86_32 */ | 134 | #endif /* CONFIG_X86_32 */ |
102 | 135 | ||
103 | #define PAGE_OFFSET ((unsigned long)__PAGE_OFFSET) | 136 | #define PAGE_OFFSET ((unsigned long)__PAGE_OFFSET) |
@@ -107,6 +140,28 @@ | |||
107 | VM_READ | VM_WRITE | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) | 140 | VM_READ | VM_WRITE | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) |
108 | 141 | ||
109 | 142 | ||
143 | #ifndef __ASSEMBLY__ | ||
144 | struct page; | ||
145 | |||
146 | static void inline clear_user_page(void *page, unsigned long vaddr, | ||
147 | struct page *pg) | ||
148 | { | ||
149 | clear_page(page); | ||
150 | } | ||
151 | |||
152 | static void inline copy_user_page(void *to, void *from, unsigned long vaddr, | ||
153 | struct page *topage) | ||
154 | { | ||
155 | copy_page(to, from); | ||
156 | } | ||
157 | |||
158 | #define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \ | ||
159 | alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr) | ||
160 | #define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE | ||
161 | |||
162 | #endif /* __ASSEMBLY__ */ | ||
163 | |||
164 | |||
110 | #ifdef CONFIG_X86_32 | 165 | #ifdef CONFIG_X86_32 |
111 | # include "page_32.h" | 166 | # include "page_32.h" |
112 | #else | 167 | #else |
diff --git a/include/asm-x86/page_32.h b/include/asm-x86/page_32.h index 69e520059b26..b4750ef44920 100644 --- a/include/asm-x86/page_32.h +++ b/include/asm-x86/page_32.h | |||
@@ -4,59 +4,6 @@ | |||
4 | #ifdef __KERNEL__ | 4 | #ifdef __KERNEL__ |
5 | #ifndef __ASSEMBLY__ | 5 | #ifndef __ASSEMBLY__ |
6 | 6 | ||
7 | #include <linux/string.h> | ||
8 | |||
9 | #ifdef CONFIG_X86_USE_3DNOW | ||
10 | |||
11 | #include <asm/mmx.h> | ||
12 | |||
13 | static inline void clear_page(void *page) | ||
14 | { | ||
15 | mmx_clear_page(page); | ||
16 | } | ||
17 | |||
18 | static inline void copy_page(void *to, void *from) | ||
19 | { | ||
20 | mmx_copy_page(to, from); | ||
21 | } | ||
22 | |||
23 | #else | ||
24 | |||
25 | /* | ||
26 | * On older X86 processors it's not a win to use MMX here it seems. | ||
27 | * Maybe the K6-III ? | ||
28 | */ | ||
29 | |||
30 | static inline void clear_page(void *page) | ||
31 | { | ||
32 | memset(page, 0, PAGE_SIZE); | ||
33 | } | ||
34 | |||
35 | static inline void copy_page(void *to, void *from) | ||
36 | { | ||
37 | memcpy(to, from, PAGE_SIZE); | ||
38 | } | ||
39 | |||
40 | #endif | ||
41 | |||
42 | struct page; | ||
43 | |||
44 | static void inline clear_user_page(void *page, unsigned long vaddr, | ||
45 | struct page *pg) | ||
46 | { | ||
47 | clear_page(page); | ||
48 | } | ||
49 | |||
50 | static void inline copy_user_page(void *to, void *from, unsigned long vaddr, | ||
51 | struct page *topage) | ||
52 | { | ||
53 | copy_page(to, from); | ||
54 | } | ||
55 | |||
56 | #define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \ | ||
57 | alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr) | ||
58 | #define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE | ||
59 | |||
60 | /* | 7 | /* |
61 | * These are used to make use of C type-checking.. | 8 | * These are used to make use of C type-checking.. |
62 | */ | 9 | */ |
diff --git a/include/asm-x86/page_64.h b/include/asm-x86/page_64.h index 69ef7cf9dadd..f5e0543b8afa 100644 --- a/include/asm-x86/page_64.h +++ b/include/asm-x86/page_64.h | |||
@@ -7,26 +7,6 @@ | |||
7 | extern unsigned long end_pfn; | 7 | extern unsigned long end_pfn; |
8 | extern unsigned long end_pfn_map; | 8 | extern unsigned long end_pfn_map; |
9 | 9 | ||
10 | void clear_page(void *page); | ||
11 | void copy_page(void *to, void *from); | ||
12 | |||
13 | struct page; | ||
14 | |||
15 | static void inline clear_user_page(void *page, unsigned long vaddr, | ||
16 | struct page *pg) | ||
17 | { | ||
18 | clear_page(page); | ||
19 | } | ||
20 | |||
21 | static void inline copy_user_page(void *to, void *from, unsigned long vaddr, | ||
22 | struct page *topage) | ||
23 | { | ||
24 | copy_page(to, from); | ||
25 | } | ||
26 | |||
27 | #define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \ | ||
28 | alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr) | ||
29 | #define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE | ||
30 | /* | 10 | /* |
31 | * These are used to make use of C type-checking.. | 11 | * These are used to make use of C type-checking.. |
32 | */ | 12 | */ |