0001
0002 #ifndef _ASM_X86_PAGE_H
0003 #define _ASM_X86_PAGE_H
0004
0005 #include <linux/types.h>
0006
0007 #ifdef __KERNEL__
0008
0009 #include <asm/page_types.h>
0010
0011 #ifdef CONFIG_X86_64
0012 #include <asm/page_64.h>
0013 #else
0014 #include <asm/page_32.h>
0015 #endif
0016
0017 #ifndef __ASSEMBLY__
0018
0019 struct page;
0020
0021 #include <linux/range.h>
0022 extern struct range pfn_mapped[];
0023 extern int nr_pfn_mapped;
0024
0025 static inline void clear_user_page(void *page, unsigned long vaddr,
0026 struct page *pg)
0027 {
0028 clear_page(page);
0029 }
0030
0031 static inline void copy_user_page(void *to, void *from, unsigned long vaddr,
0032 struct page *topage)
0033 {
0034 copy_page(to, from);
0035 }
0036
0037 #define alloc_zeroed_user_highpage_movable(vma, vaddr) \
0038 alloc_page_vma(GFP_HIGHUSER_MOVABLE | __GFP_ZERO, vma, vaddr)
0039 #define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE_MOVABLE
0040
0041 #ifndef __pa
0042 #define __pa(x) __phys_addr((unsigned long)(x))
0043 #endif
0044
0045 #define __pa_nodebug(x) __phys_addr_nodebug((unsigned long)(x))
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055 #define __pa_symbol(x) \
0056 __phys_addr_symbol(__phys_reloc_hide((unsigned long)(x)))
0057
0058 #ifndef __va
0059 #define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET))
0060 #endif
0061
0062 #define __boot_va(x) __va(x)
0063 #define __boot_pa(x) __pa(x)
0064
0065
0066
0067
0068
0069 #define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
0070 #define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT)
0071 extern bool __virt_addr_valid(unsigned long kaddr);
0072 #define virt_addr_valid(kaddr) __virt_addr_valid((unsigned long) (kaddr))
0073
0074 static __always_inline u64 __canonical_address(u64 vaddr, u8 vaddr_bits)
0075 {
0076 return ((s64)vaddr << (64 - vaddr_bits)) >> (64 - vaddr_bits);
0077 }
0078
0079 static __always_inline u64 __is_canonical_address(u64 vaddr, u8 vaddr_bits)
0080 {
0081 return __canonical_address(vaddr, vaddr_bits) == vaddr;
0082 }
0083
0084 #endif
0085
0086 #include <asm-generic/memory_model.h>
0087 #include <asm-generic/getorder.h>
0088
0089 #define HAVE_ARCH_HUGETLB_UNMAPPED_AREA
0090
0091 #endif
0092 #endif