The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/lib/iomap_copy.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright 2006 PathScale, Inc.  All Rights Reserved.
    3  *
    4  * This file is free software; you can redistribute it and/or modify
    5  * it under the terms of version 2 of the GNU General Public License
    6  * as published by the Free Software Foundation.
    7  *
    8  * This program is distributed in the hope that it will be useful,
    9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
   10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   11  * GNU General Public License for more details.
   12  *
   13  * You should have received a copy of the GNU General Public License
   14  * along with this program; if not, write to the Free Software Foundation,
   15  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
   16  */
   17 
   18 #include <linux/export.h>
   19 #include <linux/io.h>
   20 
   21 /**
   22  * __iowrite32_copy - copy data to MMIO space, in 32-bit units
   23  * @to: destination, in MMIO space (must be 32-bit aligned)
   24  * @from: source (must be 32-bit aligned)
   25  * @count: number of 32-bit quantities to copy
   26  *
   27  * Copy data from kernel space to MMIO space, in units of 32 bits at a
   28  * time.  Order of access is not guaranteed, nor is a memory barrier
   29  * performed afterwards.
   30  */
   31 void __attribute__((weak)) __iowrite32_copy(void __iomem *to,
   32                                             const void *from,
   33                                             size_t count)
   34 {
   35         u32 __iomem *dst = to;
   36         const u32 *src = from;
   37         const u32 *end = src + count;
   38 
   39         while (src < end)
   40                 __raw_writel(*src++, dst++);
   41 }
   42 EXPORT_SYMBOL_GPL(__iowrite32_copy);
   43 
   44 /**
   45  * __iowrite64_copy - copy data to MMIO space, in 64-bit or 32-bit units
   46  * @to: destination, in MMIO space (must be 64-bit aligned)
   47  * @from: source (must be 64-bit aligned)
   48  * @count: number of 64-bit quantities to copy
   49  *
   50  * Copy data from kernel space to MMIO space, in units of 32 or 64 bits at a
   51  * time.  Order of access is not guaranteed, nor is a memory barrier
   52  * performed afterwards.
   53  */
   54 void __attribute__((weak)) __iowrite64_copy(void __iomem *to,
   55                                             const void *from,
   56                                             size_t count)
   57 {
   58 #ifdef CONFIG_64BIT
   59         u64 __iomem *dst = to;
   60         const u64 *src = from;
   61         const u64 *end = src + count;
   62 
   63         while (src < end)
   64                 __raw_writeq(*src++, dst++);
   65 #else
   66         __iowrite32_copy(to, from, count * 2);
   67 #endif
   68 }
   69 
   70 EXPORT_SYMBOL_GPL(__iowrite64_copy);

Cache object: d56052366bc7d01cc554174a6dd8f1fa


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.