Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

sparc32: Fix page_to_phys().

It doesn't account for phys_base like it should, fix by using
page_to_pfn().

While we're here, make virt_to_page() use pfn_to_page() as well, so we
consistently use the asm/memory-model.h abstractions instead of
open-coding memory model assumptions.

Tested-by: Kristoffer Glembo <kristoffer@gaisler.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

+2 -2
+1 -1
arch/sparc/include/asm/io_32.h
··· 8 8 #include <asm/page.h> /* IO address mapping routines need this */ 9 9 #include <asm/system.h> 10 10 11 - #define page_to_phys(page) (((page) - mem_map) << PAGE_SHIFT) 11 + #define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT) 12 12 13 13 static inline u32 flip_dword (u32 l) 14 14 {
+1 -1
arch/sparc/include/asm/page_32.h
··· 143 143 #define phys_to_virt __va 144 144 145 145 #define ARCH_PFN_OFFSET (pfn_base) 146 - #define virt_to_page(kaddr) (mem_map + ((((unsigned long)(kaddr)-PAGE_OFFSET)>>PAGE_SHIFT))) 146 + #define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) 147 147 148 148 #define pfn_valid(pfn) (((pfn) >= (pfn_base)) && (((pfn)-(pfn_base)) < max_mapnr)) 149 149 #define virt_addr_valid(kaddr) ((((unsigned long)(kaddr)-PAGE_OFFSET)>>PAGE_SHIFT) < max_mapnr)