aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-x86/page.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-x86/page.h')
-rw-r--r--include/asm-x86/page.h55
1 files changed, 55 insertions, 0 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__
74void clear_page(void *page);
75void 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
110static inline void clear_page(void *page)
111{
112 mmx_clear_page(page);
113}
114
115static 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
122static inline void clear_page(void *page)
123{
124 memset(page, 0, PAGE_SIZE);
125}
126
127static 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__
144struct page;
145
146static void inline clear_user_page(void *page, unsigned long vaddr,
147 struct page *pg)
148{
149 clear_page(page);
150}
151
152static 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