blob: f4470307edb8f4a9a3327e700d620de1f9124616 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#include <linux/module.h>
2#include <linux/types.h>
Russell Kingfced80c2008-09-06 12:10:45 +01003#include <linux/io.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -07004
5/*
6 * Copy data from IO memory space to "real" memory space.
7 * This needs to be optimized.
8 */
Russell Kingd2f60742005-09-24 10:42:06 +01009void _memcpy_fromio(void *to, const volatile void __iomem *from, size_t count)
Linus Torvalds1da177e2005-04-16 15:20:36 -070010{
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 */
Russell Kingd2f60742005-09-24 10:42:06 +010024void _memcpy_toio(volatile void __iomem *to, const void *from, size_t count)
Linus Torvalds1da177e2005-04-16 15:20:36 -070025{
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 */
Russell Kingd2f60742005-09-24 10:42:06 +010039void _memset_io(volatile void __iomem *dst, int c, size_t count)
Linus Torvalds1da177e2005-04-16 15:20:36 -070040{
41 while (count) {
42 count--;
43 writeb(c, dst);
44 dst++;
45 }
46}
47
48EXPORT_SYMBOL(_memcpy_fromio);
49EXPORT_SYMBOL(_memcpy_toio);
50EXPORT_SYMBOL(_memset_io);