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 @@ #define KERNEL_TEXT_SIZE (40*1024*1024) #define KERNEL_TEXT_START _AC(0xffffffff80000000, UL) +#ifndef __ASSEMBLY__ +void clear_page(void *page); +void copy_page(void *to, void *from); +#endif /* !__ASSEMBLY__ */ + #endif /* CONFIG_X86_64 */ #ifdef CONFIG_X86_32 @@ -98,6 +103,34 @@ #define HAVE_ARCH_HUGETLB_UNMAPPED_AREA #endif +#ifndef __ASSEMBLY__ +#ifdef CONFIG_X86_USE_3DNOW +#include <asm/mmx.h> + +static inline void clear_page(void *page) +{ + mmx_clear_page(page); +} + +static inline void copy_page(void *to, void *from) +{ + mmx_copy_page(to, from); +} +#else /* !CONFIG_X86_USE_3DNOW */ +#include <linux/string.h> + +static inline void clear_page(void *page) +{ + memset(page, 0, PAGE_SIZE); +} + +static inline void copy_page(void *to, void *from) +{ + memcpy(to, from, PAGE_SIZE); +} +#endif /* CONFIG_X86_3DNOW */ +#endif /* !__ASSEMBLY__ */ + #endif /* CONFIG_X86_32 */ #define PAGE_OFFSET ((unsigned long)__PAGE_OFFSET) @@ -107,6 +140,28 @@ VM_READ | VM_WRITE | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) +#ifndef __ASSEMBLY__ +struct page; + +static void inline clear_user_page(void *page, unsigned long vaddr, + struct page *pg) +{ + clear_page(page); +} + +static void inline copy_user_page(void *to, void *from, unsigned long vaddr, + struct page *topage) +{ + copy_page(to, from); +} + +#define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \ + alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr) +#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE + +#endif /* __ASSEMBLY__ */ + + #ifdef CONFIG_X86_32 # include "page_32.h" #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 @@ #ifdef __KERNEL__ #ifndef __ASSEMBLY__ -#include <linux/string.h> - -#ifdef CONFIG_X86_USE_3DNOW - -#include <asm/mmx.h> - -static inline void clear_page(void *page) -{ - mmx_clear_page(page); -} - -static inline void copy_page(void *to, void *from) -{ - mmx_copy_page(to, from); -} - -#else - -/* - * On older X86 processors it's not a win to use MMX here it seems. - * Maybe the K6-III ? - */ - -static inline void clear_page(void *page) -{ - memset(page, 0, PAGE_SIZE); -} - -static inline void copy_page(void *to, void *from) -{ - memcpy(to, from, PAGE_SIZE); -} - -#endif - -struct page; - -static void inline clear_user_page(void *page, unsigned long vaddr, - struct page *pg) -{ - clear_page(page); -} - -static void inline copy_user_page(void *to, void *from, unsigned long vaddr, - struct page *topage) -{ - copy_page(to, from); -} - -#define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \ - alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr) -#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE - /* * These are used to make use of C type-checking.. */ 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 @@ extern unsigned long end_pfn; extern unsigned long end_pfn_map; -void clear_page(void *page); -void copy_page(void *to, void *from); - -struct page; - -static void inline clear_user_page(void *page, unsigned long vaddr, - struct page *pg) -{ - clear_page(page); -} - -static void inline copy_user_page(void *to, void *from, unsigned long vaddr, - struct page *topage) -{ - copy_page(to, from); -} - -#define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \ - alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr) -#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE /* * These are used to make use of C type-checking.. */ |