aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mm/copypage-v6.c
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2011-07-02 09:46:27 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2012-01-26 15:06:14 -0500
commitde27c308223dc9bd48de9742c7c2b53a15c1b012 (patch)
treed32acbc71110b1e727abd80620f95f14565b6031 /arch/arm/mm/copypage-v6.c
parentdcd6c92267155e70a94b3927bce681ce74b80d1f (diff)
ARM: pgtable: move TOP_PTE address definitions to arch/arm/mm/mm.h
Move the TOP_PTE address definitions to one central place so that it's easy to discover what they're being used for. This helps to ensure that there are no overlaps. Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mm/copypage-v6.c')
-rw-r--r--arch/arm/mm/copypage-v6.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/arch/arm/mm/copypage-v6.c b/arch/arm/mm/copypage-v6.c
index 3d9a1552cef..c00a7501443 100644
--- a/arch/arm/mm/copypage-v6.c
+++ b/arch/arm/mm/copypage-v6.c
@@ -24,9 +24,6 @@
24#error FIX ME 24#error FIX ME
25#endif 25#endif
26 26
27#define from_address (0xffff8000)
28#define to_address (0xffffc000)
29
30static DEFINE_RAW_SPINLOCK(v6_lock); 27static DEFINE_RAW_SPINLOCK(v6_lock);
31 28
32/* 29/*
@@ -90,11 +87,11 @@ static void v6_copy_user_highpage_aliasing(struct page *to,
90 */ 87 */
91 raw_spin_lock(&v6_lock); 88 raw_spin_lock(&v6_lock);
92 89
93 set_pte_ext(TOP_PTE(from_address) + offset, pfn_pte(page_to_pfn(from), PAGE_KERNEL), 0); 90 kfrom = COPYPAGE_V6_FROM + (offset << PAGE_SHIFT);
94 set_pte_ext(TOP_PTE(to_address) + offset, pfn_pte(page_to_pfn(to), PAGE_KERNEL), 0); 91 kto = COPYPAGE_V6_TO + (offset << PAGE_SHIFT);
95 92
96 kfrom = from_address + (offset << PAGE_SHIFT); 93 set_pte_ext(TOP_PTE(kfrom), pfn_pte(page_to_pfn(from), PAGE_KERNEL), 0);
97 kto = to_address + (offset << PAGE_SHIFT); 94 set_pte_ext(TOP_PTE(kto), pfn_pte(page_to_pfn(to), PAGE_KERNEL), 0);
98 95
99 flush_tlb_kernel_page(kfrom); 96 flush_tlb_kernel_page(kfrom);
100 flush_tlb_kernel_page(kto); 97 flush_tlb_kernel_page(kto);
@@ -111,8 +108,7 @@ static void v6_copy_user_highpage_aliasing(struct page *to,
111 */ 108 */
112static void v6_clear_user_highpage_aliasing(struct page *page, unsigned long vaddr) 109static void v6_clear_user_highpage_aliasing(struct page *page, unsigned long vaddr)
113{ 110{
114 unsigned int offset = CACHE_COLOUR(vaddr); 111 unsigned long to = COPYPAGE_V6_TO + (CACHE_COLOUR(vaddr) << PAGE_SHIFT);
115 unsigned long to = to_address + (offset << PAGE_SHIFT);
116 112
117 /* FIXME: not highmem safe */ 113 /* FIXME: not highmem safe */
118 discard_old_kernel_data(page_address(page)); 114 discard_old_kernel_data(page_address(page));
@@ -123,7 +119,7 @@ static void v6_clear_user_highpage_aliasing(struct page *page, unsigned long vad
123 */ 119 */
124 raw_spin_lock(&v6_lock); 120 raw_spin_lock(&v6_lock);
125 121
126 set_pte_ext(TOP_PTE(to_address) + offset, pfn_pte(page_to_pfn(page), PAGE_KERNEL), 0); 122 set_pte_ext(TOP_PTE(to), pfn_pte(page_to_pfn(page), PAGE_KERNEL), 0);
127 flush_tlb_kernel_page(to); 123 flush_tlb_kernel_page(to);
128 clear_page((void *)to); 124 clear_page((void *)to);
129 125