summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2009-10-25 12:25:50 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2009-12-01 19:20:07 +0100
commitb7dc0b2cfc6e9bc7270915c642a8a8e999b6095e (patch)
tree68853dc2d48f9abcd5eadab0dc181ad8b0e8ac59 /arch
parentARM: Avoid duplicated implementation for VIVT cache flushing (diff)
downloadlinux-b7dc0b2cfc6e9bc7270915c642a8a8e999b6095e.tar.xz
linux-b7dc0b2cfc6e9bc7270915c642a8a8e999b6095e.zip
ARM: Avoid evaluating page_address() multiple times
page_address() is a function call rather than a macro, and so: if (page_address(page)) do_something(page_address(page)); results in two calls to this function. This is unnecessary; remove the duplication. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mm/flush.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/arm/mm/flush.c b/arch/arm/mm/flush.c
index a480f161a4bb..43474d8752a6 100644
--- a/arch/arm/mm/flush.c
+++ b/arch/arm/mm/flush.c
@@ -111,6 +111,8 @@ void flush_ptrace_access(struct vm_area_struct *vma, struct page *page,
void __flush_dcache_page(struct address_space *mapping, struct page *page)
{
+ void *addr = page_address(page);
+
/*
* Writeback any data associated with the kernel mapping of this
* page. This ensures that data in the physical page is mutually
@@ -121,9 +123,9 @@ void __flush_dcache_page(struct address_space *mapping, struct page *page)
* kmap_atomic() doesn't set the page virtual address, and
* kunmap_atomic() takes care of cache flushing already.
*/
- if (page_address(page))
+ if (addr)
#endif
- __cpuc_flush_dcache_page(page_address(page));
+ __cpuc_flush_dcache_page(addr);
/*
* If this is a page cache page, and we have an aliasing VIPT cache,