blob: 5138174c210161ab0582b0c097e871a94dc57c1f [file] [log] [blame]
H. Peter Anvin1965aae2008-10-22 22:26:29 -07001#ifndef _ASM_X86_PAGE_64_H
2#define _ASM_X86_PAGE_64_H
Linus Torvalds1da177e2005-04-16 15:20:36 -07003
Jeremy Fitzhardinge51c78eb2009-02-08 22:52:14 -08004#include <asm/page_64_types.h>
Jeremy Fitzhardinge83a51012008-01-30 13:32:41 +01005
Alexander Duyckfb50b022012-11-16 13:53:09 -08006#ifndef __ASSEMBLY__
7
8/* duplicated to the one in bootmem.h */
9extern unsigned long max_pfn;
10extern unsigned long phys_base;
11
Alexander Duyck0bdf5252012-11-16 13:53:51 -080012static inline unsigned long __phys_addr_nodebug(unsigned long x)
13{
14 unsigned long y = x - __START_KERNEL_map;
15
16 /* use the carry flag to determine if x was < __START_KERNEL_map */
17 x = y + ((x > y) ? phys_base : (__START_KERNEL_map - PAGE_OFFSET));
18
19 return x;
20}
21
22#ifdef CONFIG_DEBUG_VIRTUAL
Alexander Duyckfb50b022012-11-16 13:53:09 -080023extern unsigned long __phys_addr(unsigned long);
Alexander Duyck0bdf5252012-11-16 13:53:51 -080024#else
25#define __phys_addr(x) __phys_addr_nodebug(x)
26#endif
Alexander Duyckfb50b022012-11-16 13:53:09 -080027
28#define __phys_reloc_hide(x) (x)
29
30#ifdef CONFIG_FLATMEM
31#define pfn_valid(pfn) ((pfn) < max_pfn)
32#endif
33
34void clear_page(void *page);
35void copy_page(void *to, void *from);
36
37#endif /* !__ASSEMBLY__ */
38
H. Peter Anvin1965aae2008-10-22 22:26:29 -070039#endif /* _ASM_X86_PAGE_64_H */