blob: 1f6822dfae7404fd57218537f1d67e1252351ffe [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#include <linux/module.h>
2#include <linux/types.h>
3
4#include <asm/io.h>
5
6/*
7 * Copy data from IO memory space to "real" memory space.
8 * This needs to be optimized.
9 */
Russell Kingd2f60742005-09-24 10:42:06 +010010void _memcpy_fromio(void *to, const volatile void __iomem *from, size_t count)
Linus Torvalds1da177e2005-04-16 15:20:36 -070011{
12 unsigned char *t = to;
13 while (count) {
14 count--;
15 *t = readb(from);
16 t++;
17 from++;
18 }
19}
20
21/*
22 * Copy data from "real" memory space to IO memory space.
23 * This needs to be optimized.
24 */
Russell Kingd2f60742005-09-24 10:42:06 +010025void _memcpy_toio(volatile void __iomem *to, const void *from, size_t count)
Linus Torvalds1da177e2005-04-16 15:20:36 -070026{
27 const unsigned char *f = from;
28 while (count) {
29 count--;
30 writeb(*f, to);
31 f++;
32 to++;
33 }
34}
35
36/*
37 * "memset" on IO memory space.
38 * This needs to be optimized.
39 */
Russell Kingd2f60742005-09-24 10:42:06 +010040void _memset_io(volatile void __iomem *dst, int c, size_t count)
Linus Torvalds1da177e2005-04-16 15:20:36 -070041{
42 while (count) {
43 count--;
44 writeb(c, dst);
45 dst++;
46 }
47}
48
49EXPORT_SYMBOL(_memcpy_fromio);
50EXPORT_SYMBOL(_memcpy_toio);
51EXPORT_SYMBOL(_memset_io);