aboutsummaryrefslogtreecommitdiffstats
path: root/arch/parisc/kernel/cache.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/parisc/kernel/cache.c')
-rw-r--r--arch/parisc/kernel/cache.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c
index a72545554a31..ac87a40502e6 100644
--- a/arch/parisc/kernel/cache.c
+++ b/arch/parisc/kernel/cache.c
@@ -388,6 +388,20 @@ void flush_kernel_dcache_page_addr(void *addr)
388} 388}
389EXPORT_SYMBOL(flush_kernel_dcache_page_addr); 389EXPORT_SYMBOL(flush_kernel_dcache_page_addr);
390 390
391void copy_user_page(void *vto, void *vfrom, unsigned long vaddr,
392 struct page *pg)
393{
394 /* Copy using kernel mapping. No coherency is needed (all in
395 kunmap) for the `to' page. However, the `from' page needs to
396 be flushed through a mapping equivalent to the user mapping
397 before it can be accessed through the kernel mapping. */
398 preempt_disable();
399 flush_dcache_page_asm(__pa(vfrom), vaddr);
400 preempt_enable();
401 copy_page_asm(vto, vfrom);
402}
403EXPORT_SYMBOL(copy_user_page);
404
391void purge_tlb_entries(struct mm_struct *mm, unsigned long addr) 405void purge_tlb_entries(struct mm_struct *mm, unsigned long addr)
392{ 406{
393 unsigned long flags; 407 unsigned long flags;