diff options
| -rw-r--r-- | arch/avr32/mm/cache.c | 20 | ||||
| -rw-r--r-- | include/asm-avr32/cacheflush.h | 19 | 
2 files changed, 20 insertions, 19 deletions
diff --git a/arch/avr32/mm/cache.c b/arch/avr32/mm/cache.c index c1233c615e6..15a4e5e142c 100644 --- a/arch/avr32/mm/cache.c +++ b/arch/avr32/mm/cache.c @@ -122,16 +122,6 @@ void flush_icache_page(struct vm_area_struct *vma, struct page *page)  	}  } -/* - * This one is used by copy_to_user_page() - */ -void flush_icache_user_range(struct vm_area_struct *vma, struct page *page, -			     unsigned long addr, int len) -{ -	if (vma->vm_flags & VM_EXEC) -		flush_icache_range(addr, addr + len); -} -  asmlinkage int sys_cacheflush(int operation, void __user *addr, size_t len)  {  	int ret; @@ -159,3 +149,13 @@ asmlinkage int sys_cacheflush(int operation, void __user *addr, size_t len)  out:  	return ret;  } + +void copy_to_user_page(struct vm_area_struct *vma, struct page *page, +		unsigned long vaddr, void *dst, const void *src, +		unsigned long len) +{ +	memcpy(dst, src, len); +	if (vma->vm_flags & VM_EXEC) +		flush_icache_range((unsigned long)dst, +				(unsigned long)dst + len); +} diff --git a/include/asm-avr32/cacheflush.h b/include/asm-avr32/cacheflush.h index dfaaa88cd41..670674749b2 100644 --- a/include/asm-avr32/cacheflush.h +++ b/include/asm-avr32/cacheflush.h @@ -116,15 +116,16 @@ extern void flush_icache_page(struct vm_area_struct *vma, struct page *page);   * flush with all configurations.   */  extern void flush_icache_range(unsigned long start, unsigned long end); -extern void flush_icache_user_range(struct vm_area_struct *vma, -				    struct page *page, -				    unsigned long addr, int len); -#define copy_to_user_page(vma, page, vaddr, dst, src, len) do {	\ -	memcpy(dst, src, len);					\ -	flush_icache_user_range(vma, page, vaddr, len);		\ -} while(0) -#define copy_from_user_page(vma, page, vaddr, dst, src, len)	\ -	memcpy(dst, src, len) +extern void copy_to_user_page(struct vm_area_struct *vma, struct page *page, +		unsigned long vaddr, void *dst, const void *src, +		unsigned long len); + +static inline void copy_from_user_page(struct vm_area_struct *vma, +		struct page *page, unsigned long vaddr, void *dst, +		const void *src, unsigned long len) +{ +	memcpy(dst, src, len); +}  #endif /* __ASM_AVR32_CACHEFLUSH_H */  |