summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/asm-mips/pgtable.h7
-rw-r--r--include/asm-mips64/pgtable.h7
2 files changed, 12 insertions, 2 deletions
diff --git a/include/asm-mips/pgtable.h b/include/asm-mips/pgtable.h
index ad03fdc2a..f72b7ddd3 100644
--- a/include/asm-mips/pgtable.h
+++ b/include/asm-mips/pgtable.h
@@ -43,7 +43,12 @@ extern void (*_flush_page_to_ram)(struct page * page);
#define flush_icache_range(start, end) flush_cache_all()
-#define flush_icache_page(vma, page) _flush_cache_page(vma, page->virtual & PAGE_MASK)
+#define flush_icache_page(vma, page) \
+do { \
+ unsigned long addr; \
+ addr = page_address(page); \
+ _flush_cache_page(vma, addr); \
+} while (0)
/*
diff --git a/include/asm-mips64/pgtable.h b/include/asm-mips64/pgtable.h
index 6a3381aae..e3f688c8a 100644
--- a/include/asm-mips64/pgtable.h
+++ b/include/asm-mips64/pgtable.h
@@ -43,8 +43,13 @@ extern void (*_flush_page_to_ram)(struct page * page);
#define flush_page_to_ram(page) _flush_page_to_ram(page)
#define flush_icache_range(start, end) flush_cache_all()
-#define flush_icache_page(vma, page) flush_cache_page(vma, page->virtual & PAGE_MASK)
+#define flush_icache_page(vma, page) \
+do { \
+ unsigned long addr; \
+ addr = page_address(page); \
+ _flush_cache_page(vma, addr); \
+} while (0)
/*
* Each address space has 2 4K pages as its page directory, giving 1024