OpenCores
URL https://opencores.org/ocsvn/or1k_soc_on_altera_embedded_dev_kit/or1k_soc_on_altera_embedded_dev_kit/trunk

Subversion Repositories or1k_soc_on_altera_embedded_dev_kit

[/] [or1k_soc_on_altera_embedded_dev_kit/] [tags/] [linux-2.6/] [linux-2.6.24_or32_unified_v2.3/] [lib/] [iomap_copy.c] - Blame information for rev 8

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 xianfeng
/*
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/module.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);

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.