Merge branches 'x86/xen', 'x86/build', 'x86/microcode', 'x86/mm-debug-v2', 'x86/memor...
[linux-2.6] / arch / arm / kernel / io.c
1 #include <linux/module.h>
2 #include <linux/types.h>
3 #include <linux/io.h>
4
5 /*
6  * Copy data from IO memory space to "real" memory space.
7  * This needs to be optimized.
8  */
9 void _memcpy_fromio(void *to, const volatile void __iomem *from, size_t count)
10 {
11         unsigned char *t = to;
12         while (count) {
13                 count--;
14                 *t = readb(from);
15                 t++;
16                 from++;
17         }
18 }
19
20 /*
21  * Copy data from "real" memory space to IO memory space.
22  * This needs to be optimized.
23  */
24 void _memcpy_toio(volatile void __iomem *to, const void *from, size_t count)
25 {
26         const unsigned char *f = from;
27         while (count) {
28                 count--;
29                 writeb(*f, to);
30                 f++;
31                 to++;
32         }
33 }
34
35 /*
36  * "memset" on IO memory space.
37  * This needs to be optimized.
38  */
39 void _memset_io(volatile void __iomem *dst, int c, size_t count)
40 {
41         while (count) {
42                 count--;
43                 writeb(c, dst);
44                 dst++;
45         }
46 }
47
48 EXPORT_SYMBOL(_memcpy_fromio);
49 EXPORT_SYMBOL(_memcpy_toio);
50 EXPORT_SYMBOL(_memset_io);