diff options
-rw-r--r-- | include/asm-x86/page_32.h | 39 | ||||
-rw-r--r-- | include/asm-x86/page_64.h | 21 |
2 files changed, 49 insertions, 11 deletions
diff --git a/include/asm-x86/page_32.h b/include/asm-x86/page_32.h index 80ecc66b6d86..c620c934e557 100644 --- a/include/asm-x86/page_32.h +++ b/include/asm-x86/page_32.h | |||
@@ -12,12 +12,21 @@ | |||
12 | #ifdef __KERNEL__ | 12 | #ifdef __KERNEL__ |
13 | #ifndef __ASSEMBLY__ | 13 | #ifndef __ASSEMBLY__ |
14 | 14 | ||
15 | #include <linux/string.h> | ||
16 | |||
15 | #ifdef CONFIG_X86_USE_3DNOW | 17 | #ifdef CONFIG_X86_USE_3DNOW |
16 | 18 | ||
17 | #include <asm/mmx.h> | 19 | #include <asm/mmx.h> |
18 | 20 | ||
19 | #define clear_page(page) mmx_clear_page((void *)(page)) | 21 | static inline void clear_page(void *page) |
20 | #define copy_page(to,from) mmx_copy_page(to,from) | 22 | { |
23 | mmx_clear_page(page); | ||
24 | } | ||
25 | |||
26 | static inline void copy_page(void *to, void *from) | ||
27 | { | ||
28 | mmx_copy_page(to, from); | ||
29 | } | ||
21 | 30 | ||
22 | #else | 31 | #else |
23 | 32 | ||
@@ -26,13 +35,31 @@ | |||
26 | * Maybe the K6-III ? | 35 | * Maybe the K6-III ? |
27 | */ | 36 | */ |
28 | 37 | ||
29 | #define clear_page(page) memset((void *)(page), 0, PAGE_SIZE) | 38 | static inline void clear_page(void *page) |
30 | #define copy_page(to,from) memcpy((void *)(to), (void *)(from), PAGE_SIZE) | 39 | { |
40 | memset(page, 0, PAGE_SIZE); | ||
41 | } | ||
42 | |||
43 | static inline void copy_page(void *to, void *from) | ||
44 | { | ||
45 | memcpy(to, from, PAGE_SIZE); | ||
46 | } | ||
31 | 47 | ||
32 | #endif | 48 | #endif |
33 | 49 | ||
34 | #define clear_user_page(page, vaddr, pg) clear_page(page) | 50 | struct page; |
35 | #define copy_user_page(to, from, vaddr, pg) copy_page(to, from) | 51 | |
52 | static void inline clear_user_page(void *page, unsigned long vaddr, | ||
53 | struct page *pg) | ||
54 | { | ||
55 | clear_page(page); | ||
56 | } | ||
57 | |||
58 | static void inline copy_user_page(void *to, void *from, unsigned long vaddr, | ||
59 | struct page *topage) | ||
60 | { | ||
61 | copy_page(to, from); | ||
62 | } | ||
36 | 63 | ||
37 | #define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \ | 64 | #define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \ |
38 | alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr) | 65 | alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr) |
diff --git a/include/asm-x86/page_64.h b/include/asm-x86/page_64.h index d400167c5509..068b5e4cea4c 100644 --- a/include/asm-x86/page_64.h +++ b/include/asm-x86/page_64.h | |||
@@ -43,11 +43,22 @@ | |||
43 | extern unsigned long end_pfn; | 43 | extern unsigned long end_pfn; |
44 | extern unsigned long end_pfn_map; | 44 | extern unsigned long end_pfn_map; |
45 | 45 | ||
46 | void clear_page(void *); | 46 | void clear_page(void *page); |
47 | void copy_page(void *, void *); | 47 | void copy_page(void *to, void *from); |
48 | 48 | ||
49 | #define clear_user_page(page, vaddr, pg) clear_page(page) | 49 | struct page; |
50 | #define copy_user_page(to, from, vaddr, pg) copy_page(to, from) | 50 | |
51 | static void inline clear_user_page(void *page, unsigned long vaddr, | ||
52 | struct page *pg) | ||
53 | { | ||
54 | clear_page(page); | ||
55 | } | ||
56 | |||
57 | static void inline copy_user_page(void *to, void *from, unsigned long vaddr, | ||
58 | struct page *topage) | ||
59 | { | ||
60 | copy_page(to, from); | ||
61 | } | ||
51 | 62 | ||
52 | #define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \ | 63 | #define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \ |
53 | alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr) | 64 | alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr) |