diff options
-rw-r--r-- | include/asm-mips/pgtable.h | 7 | ||||
-rw-r--r-- | include/asm-mips64/pgtable.h | 7 |
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 |