LCOV - code coverage report
Current view: top level - lib - iomap_copy.c (source / functions) Hit Total Coverage
Test: combined.info Lines: 0 21 0.0 %
Date: 2022-04-01 14:17:54 Functions: 0 3 0.0 %
Branches: 0 6 0.0 %

           Branch data     Line data    Source code
       1                 :            : // SPDX-License-Identifier: GPL-2.0-only
       2                 :            : /*
       3                 :            :  * Copyright 2006 PathScale, Inc.  All Rights Reserved.
       4                 :            :  */
       5                 :            : 
       6                 :            : #include <linux/export.h>
       7                 :            : #include <linux/io.h>
       8                 :            : 
       9                 :            : /**
      10                 :            :  * __iowrite32_copy - copy data to MMIO space, in 32-bit units
      11                 :            :  * @to: destination, in MMIO space (must be 32-bit aligned)
      12                 :            :  * @from: source (must be 32-bit aligned)
      13                 :            :  * @count: number of 32-bit quantities to copy
      14                 :            :  *
      15                 :            :  * Copy data from kernel space to MMIO space, in units of 32 bits at a
      16                 :            :  * time.  Order of access is not guaranteed, nor is a memory barrier
      17                 :            :  * performed afterwards.
      18                 :            :  */
      19                 :          0 : void __attribute__((weak)) __iowrite32_copy(void __iomem *to,
      20                 :            :                                             const void *from,
      21                 :            :                                             size_t count)
      22                 :            : {
      23                 :          0 :         u32 __iomem *dst = to;
      24                 :          0 :         const u32 *src = from;
      25                 :          0 :         const u32 *end = src + count;
      26                 :            : 
      27         [ #  # ]:          0 :         while (src < end)
      28                 :          0 :                 __raw_writel(*src++, dst++);
      29                 :          0 : }
      30                 :            : EXPORT_SYMBOL_GPL(__iowrite32_copy);
      31                 :            : 
      32                 :            : /**
      33                 :            :  * __ioread32_copy - copy data from MMIO space, in 32-bit units
      34                 :            :  * @to: destination (must be 32-bit aligned)
      35                 :            :  * @from: source, in MMIO space (must be 32-bit aligned)
      36                 :            :  * @count: number of 32-bit quantities to copy
      37                 :            :  *
      38                 :            :  * Copy data from MMIO space to kernel space, in units of 32 bits at a
      39                 :            :  * time.  Order of access is not guaranteed, nor is a memory barrier
      40                 :            :  * performed afterwards.
      41                 :            :  */
      42                 :          0 : void __ioread32_copy(void *to, const void __iomem *from, size_t count)
      43                 :            : {
      44                 :          0 :         u32 *dst = to;
      45                 :          0 :         const u32 __iomem *src = from;
      46                 :          0 :         const u32 __iomem *end = src + count;
      47                 :            : 
      48         [ #  # ]:          0 :         while (src < end)
      49                 :          0 :                 *dst++ = __raw_readl(src++);
      50                 :          0 : }
      51                 :            : EXPORT_SYMBOL_GPL(__ioread32_copy);
      52                 :            : 
      53                 :            : /**
      54                 :            :  * __iowrite64_copy - copy data to MMIO space, in 64-bit or 32-bit units
      55                 :            :  * @to: destination, in MMIO space (must be 64-bit aligned)
      56                 :            :  * @from: source (must be 64-bit aligned)
      57                 :            :  * @count: number of 64-bit quantities to copy
      58                 :            :  *
      59                 :            :  * Copy data from kernel space to MMIO space, in units of 32 or 64 bits at a
      60                 :            :  * time.  Order of access is not guaranteed, nor is a memory barrier
      61                 :            :  * performed afterwards.
      62                 :            :  */
      63                 :          0 : void __attribute__((weak)) __iowrite64_copy(void __iomem *to,
      64                 :            :                                             const void *from,
      65                 :            :                                             size_t count)
      66                 :            : {
      67                 :            : #ifdef CONFIG_64BIT
      68                 :          0 :         u64 __iomem *dst = to;
      69                 :          0 :         const u64 *src = from;
      70                 :          0 :         const u64 *end = src + count;
      71                 :            : 
      72         [ #  # ]:          0 :         while (src < end)
      73                 :          0 :                 __raw_writeq(*src++, dst++);
      74                 :            : #else
      75                 :            :         __iowrite32_copy(to, from, count * 2);
      76                 :            : #endif
      77                 :          0 : }
      78                 :            : 
      79                 :            : EXPORT_SYMBOL_GPL(__iowrite64_copy);

Generated by: LCOV version 1.14