1caab277bSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only 21d18c47cSCatalin Marinas /* 31d18c47cSCatalin Marinas * Based on arch/arm/mm/copypage.c 41d18c47cSCatalin Marinas * 51d18c47cSCatalin Marinas * Copyright (C) 2002 Deep Blue Solutions Ltd, All Rights Reserved. 61d18c47cSCatalin Marinas * Copyright (C) 2012 ARM Ltd. 71d18c47cSCatalin Marinas */ 81d18c47cSCatalin Marinas 91d18c47cSCatalin Marinas #include <linux/mm.h> 101d18c47cSCatalin Marinas 111d18c47cSCatalin Marinas #include <asm/page.h> 121d18c47cSCatalin Marinas #include <asm/cacheflush.h> 131d18c47cSCatalin Marinas 141d18c47cSCatalin Marinas void __cpu_copy_user_page(void *kto, const void *kfrom, unsigned long vaddr) 151d18c47cSCatalin Marinas { 16e6b1185fSAshok Kumar struct page *page = virt_to_page(kto); 171d18c47cSCatalin Marinas copy_page(kto, kfrom); 18e6b1185fSAshok Kumar flush_dcache_page(page); 191d18c47cSCatalin Marinas } 20bec7cedcSMark Salter EXPORT_SYMBOL_GPL(__cpu_copy_user_page); 211d18c47cSCatalin Marinas 221d18c47cSCatalin Marinas void __cpu_clear_user_page(void *kaddr, unsigned long vaddr) 231d18c47cSCatalin Marinas { 241d18c47cSCatalin Marinas clear_page(kaddr); 251d18c47cSCatalin Marinas } 26bec7cedcSMark Salter EXPORT_SYMBOL_GPL(__cpu_clear_user_page); 27