diff options
Diffstat (limited to 'arch/arm/mm/copypage-v6.c')
| -rw-r--r-- | arch/arm/mm/copypage-v6.c | 20 | 
1 files changed, 6 insertions, 14 deletions
diff --git a/arch/arm/mm/copypage-v6.c b/arch/arm/mm/copypage-v6.c index 8b03a5814d0..b9bcc9d7917 100644 --- a/arch/arm/mm/copypage-v6.c +++ b/arch/arm/mm/copypage-v6.c @@ -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);  |