From 98fd5aee348f0420afd1c636790d50aaaec6ceec Mon Sep 17 00:00:00 2001 From: Jeremy Fitzhardinge Date: Wed, 30 Jan 2008 13:32:43 +0100 Subject: x86: page.h: move pa and va related things # HG changeset patch # User Jeremy Fitzhardinge # Date 1199319656 28800 # Node ID d617b72a0cc9d14bde2087d065c36d4ed3265761 # Parent 3bd7db6e85e66e7f3362874802df26a82fcb2d92 x86: page.h: move pa and va related things Move and unify the virtual<->physical address space conversion functions. Signed-off-by: Jeremy Fitzhardinge Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner --- include/asm-x86/page.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'include/asm-x86/page.h') diff --git a/include/asm-x86/page.h b/include/asm-x86/page.h index ef393c3..9830eeb 100644 --- a/include/asm-x86/page.h +++ b/include/asm-x86/page.h @@ -80,6 +80,9 @@ void clear_page(void *page); void copy_page(void *to, void *from); +extern unsigned long __phys_addr(unsigned long); +#define __phys_reloc_hide(x) (x) + /* * These are used to make use of C type-checking.. */ @@ -174,6 +177,13 @@ static inline pte_t native_make_pte(unsigned long val) #endif #ifndef __ASSEMBLY__ +#define __phys_addr(x) ((x)-PAGE_OFFSET) +#define __phys_reloc_hide(x) RELOC_HIDE((x), 0) + +#ifdef CONFIG_FLATMEM +#define pfn_valid(pfn) ((pfn) < max_mapnr) +#endif /* CONFIG_FLATMEM */ + #ifdef CONFIG_X86_USE_3DNOW #include @@ -299,6 +309,20 @@ static inline pmdval_t native_pmd_val(pmd_t pmd) #endif /* CONFIG_PARAVIRT */ +#define __pa(x) __phys_addr((unsigned long)(x)) +/* __pa_symbol should be used for C visible symbols. + This seems to be the official gcc blessed way to do such arithmetic. */ +#define __pa_symbol(x) __pa(__phys_reloc_hide((unsigned long)(x))) + +#define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET)) + +#define __boot_va(x) __va(x) +#define __boot_pa(x) __pa(x) + +#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) +#define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT) +#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) + #endif /* __ASSEMBLY__ */ -- cgit v1.1