aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/asm-x86/page.h55
-rw-r--r--include/asm-x86/page_32.h53
-rw-r--r--include/asm-x86/page_64.h20
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__
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
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
13static inline void clear_page(void *page)
14{
15 mmx_clear_page(page);
16}
17
18static 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
30static inline void clear_page(void *page)
31{
32 memset(page, 0, PAGE_SIZE);
33}
34
35static inline void copy_page(void *to, void *from)
36{
37 memcpy(to, from, PAGE_SIZE);
38}
39
40#endif
41
42struct page;
43
44static void inline clear_user_page(void *page, unsigned long vaddr,
45 struct page *pg)
46{
47 clear_page(page);
48}
49
50static 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 @@
7extern unsigned long end_pfn; 7extern unsigned long end_pfn;
8extern unsigned long end_pfn_map; 8extern unsigned long end_pfn_map;
9 9
10void clear_page(void *page);
11void copy_page(void *to, void *from);
12
13struct page;
14
15static void inline clear_user_page(void *page, unsigned long vaddr,
16 struct page *pg)
17{
18 clear_page(page);
19}
20
21static 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 */