Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm
[linux-2.6-block.git] / arch / arm / mm / copypage-v6.c
index 8b03a5814d005e0591e79885f562c401c23a6379..b9bcc9d79176a43c464ef562b2118a119d14a825 100644 (file)
@@ -24,9 +24,6 @@
 #error FIX ME
 #endif
 
-#define from_address   (0xffff8000)
-#define to_address     (0xffffc000)
-
 static DEFINE_RAW_SPINLOCK(v6_lock);
 
 /*
@@ -90,14 +87,11 @@ static void v6_copy_user_highpage_aliasing(struct page *to,
         */
        raw_spin_lock(&v6_lock);
 
-       set_pte_ext(TOP_PTE(from_address) + offset, pfn_pte(page_to_pfn(from), PAGE_KERNEL), 0);
-       set_pte_ext(TOP_PTE(to_address) + offset, pfn_pte(page_to_pfn(to), PAGE_KERNEL), 0);
-
-       kfrom = from_address + (offset << PAGE_SHIFT);
-       kto   = to_address + (offset << PAGE_SHIFT);
+       kfrom = COPYPAGE_V6_FROM + (offset << PAGE_SHIFT);
+       kto   = COPYPAGE_V6_TO + (offset << PAGE_SHIFT);
 
-       flush_tlb_kernel_page(kfrom);
-       flush_tlb_kernel_page(kto);
+       set_top_pte(kfrom, mk_pte(from, PAGE_KERNEL));
+       set_top_pte(kto, mk_pte(to, PAGE_KERNEL));
 
        copy_page((void *)kto, (void *)kfrom);
 
@@ -111,8 +105,7 @@ static void v6_copy_user_highpage_aliasing(struct page *to,
  */
 static void v6_clear_user_highpage_aliasing(struct page *page, unsigned long vaddr)
 {
-       unsigned int offset = CACHE_COLOUR(vaddr);
-       unsigned long to = to_address + (offset << PAGE_SHIFT);
+       unsigned long to = COPYPAGE_V6_TO + (CACHE_COLOUR(vaddr) << PAGE_SHIFT);
 
        /* FIXME: not highmem safe */
        discard_old_kernel_data(page_address(page));
@@ -123,8 +116,7 @@ static void v6_clear_user_highpage_aliasing(struct page *page, unsigned long vad
         */
        raw_spin_lock(&v6_lock);
 
-       set_pte_ext(TOP_PTE(to_address) + offset, pfn_pte(page_to_pfn(page), PAGE_KERNEL), 0);
-       flush_tlb_kernel_page(to);
+       set_top_pte(to, mk_pte(page, PAGE_KERNEL));
        clear_page((void *)to);
 
        raw_spin_unlock(&v6_lock);