提交 99e3b942 编写于 作者: F Franck Bui-Huu 提交者: Ralf Baechle

[MIPS] page.h: remove __pa() usages.

__pa() was used by virt_to_page() and virt_addr_valid(). These
latter are used when kernel is initialised so __pa() is not
appropriate, we use virt_to_phys() instead.

Futhermore __pa() is going to take care of CKSEG0/XKPHYS
address mix for 64 bit kernels. This makes __pa() more complex
than virt_to_phys() and this extra work is not needed by
virt_to_page() and virt_addr_valid().

Eventually it consolidates virt_to_phys() prototype by making
its argument 'const'. this avoids some warnings that was due
to some virt_to_page() usages which pass const pointer.
Signed-off-by: NFranck Bui-Huu <fbuihuu@gmail.com>
Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
上级 0215ffb0
...@@ -90,9 +90,9 @@ unsigned long setup_zero_pages(void) ...@@ -90,9 +90,9 @@ unsigned long setup_zero_pages(void)
if (!empty_zero_page) if (!empty_zero_page)
panic("Oh boy, that early out of memory?"); panic("Oh boy, that early out of memory?");
page = virt_to_page(empty_zero_page); page = virt_to_page((void *)empty_zero_page);
split_page(page, order); split_page(page, order);
while (page < virt_to_page(empty_zero_page + (PAGE_SIZE << order))) { while (page < virt_to_page((void *)(empty_zero_page + (PAGE_SIZE << order)))) {
SetPageReserved(page); SetPageReserved(page);
page++; page++;
} }
...@@ -448,8 +448,8 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end) ...@@ -448,8 +448,8 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end)
unsigned long addr; unsigned long addr;
for (addr = begin; addr < end; addr += PAGE_SIZE) { for (addr = begin; addr < end; addr += PAGE_SIZE) {
ClearPageReserved(virt_to_page(addr)); ClearPageReserved(virt_to_page((void *)addr));
init_page_count(virt_to_page(addr)); init_page_count(virt_to_page((void *)addr));
memset((void *)addr, 0xcc, PAGE_SIZE); memset((void *)addr, 0xcc, PAGE_SIZE);
free_page(addr); free_page(addr);
totalram_pages++; totalram_pages++;
......
...@@ -113,7 +113,7 @@ static inline void set_io_port_base(unsigned long base) ...@@ -113,7 +113,7 @@ static inline void set_io_port_base(unsigned long base)
* almost all conceivable cases a device driver should not be using * almost all conceivable cases a device driver should not be using
* this function * this function
*/ */
static inline unsigned long virt_to_phys(volatile void * address) static inline unsigned long virt_to_phys(volatile const void *address)
{ {
return (unsigned long)address - PAGE_OFFSET; return (unsigned long)address - PAGE_OFFSET;
} }
......
...@@ -34,7 +34,9 @@ ...@@ -34,7 +34,9 @@
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
#include <linux/pfn.h>
#include <asm/cpu-features.h> #include <asm/cpu-features.h>
#include <asm/io.h>
extern void clear_page(void * page); extern void clear_page(void * page);
extern void copy_page(void * to, void * from); extern void copy_page(void * to, void * from);
...@@ -160,8 +162,8 @@ typedef struct { unsigned long pgprot; } pgprot_t; ...@@ -160,8 +162,8 @@ typedef struct { unsigned long pgprot; } pgprot_t;
#endif #endif
#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) #define virt_to_page(kaddr) pfn_to_page(PFN_DOWN(virt_to_phys(kaddr)))
#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) #define virt_addr_valid(kaddr) pfn_valid(PFN_DOWN(virt_to_phys(kaddr)))
#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \
VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
......
...@@ -67,7 +67,7 @@ extern unsigned long empty_zero_page; ...@@ -67,7 +67,7 @@ extern unsigned long empty_zero_page;
extern unsigned long zero_page_mask; extern unsigned long zero_page_mask;
#define ZERO_PAGE(vaddr) \ #define ZERO_PAGE(vaddr) \
(virt_to_page(empty_zero_page + (((unsigned long)(vaddr)) & zero_page_mask))) (virt_to_page((void *)(empty_zero_page + (((unsigned long)(vaddr)) & zero_page_mask))))
#define __HAVE_ARCH_MOVE_PTE #define __HAVE_ARCH_MOVE_PTE
#define move_pte(pte, prot, old_addr, new_addr) \ #define move_pte(pte, prot, old_addr, new_addr) \
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册