root/arch/arm64/lib/uaccess_flushcache.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. memcpy_flushcache
  2. memcpy_page_flushcache
  3. __copy_user_flushcache

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * Copyright (C) 2017 ARM Ltd.
   4  */
   5 
   6 #include <linux/uaccess.h>
   7 #include <asm/barrier.h>
   8 #include <asm/cacheflush.h>
   9 
  10 void memcpy_flushcache(void *dst, const void *src, size_t cnt)
  11 {
  12         /*
  13          * We assume this should not be called with @dst pointing to
  14          * non-cacheable memory, such that we don't need an explicit
  15          * barrier to order the cache maintenance against the memcpy.
  16          */
  17         memcpy(dst, src, cnt);
  18         __clean_dcache_area_pop(dst, cnt);
  19 }
  20 EXPORT_SYMBOL_GPL(memcpy_flushcache);
  21 
  22 void memcpy_page_flushcache(char *to, struct page *page, size_t offset,
  23                             size_t len)
  24 {
  25         memcpy_flushcache(to, page_address(page) + offset, len);
  26 }
  27 
  28 unsigned long __copy_user_flushcache(void *to, const void __user *from,
  29                                      unsigned long n)
  30 {
  31         unsigned long rc;
  32 
  33         uaccess_enable_not_uao();
  34         rc = __arch_copy_from_user(to, from, n);
  35         uaccess_disable_not_uao();
  36 
  37         /* See above */
  38         __clean_dcache_area_pop(to, n - rc);
  39         return rc;
  40 }

/* [<][>][^][v][top][bottom][index][help] */