blob: d9932f25993b744a328e3451681080e040efed35 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
2 * linux/arch/sh/kernel/io.c
3 *
4 * Copyright (C) 2000 Stuart Menefy
5 *
6 * Provide real functions which expand to whatever the header file defined.
7 * Also definitions of machine independent IO functions.
8 */
9
10#include <asm/io.h>
11#include <linux/module.h>
12
13/*
14 * Copy data from IO memory space to "real" memory space.
15 * This needs to be optimized.
16 */
17void memcpy_fromio(void * to, unsigned long from, unsigned long count)
18{
19 char *p = to;
20 while (count) {
21 count--;
22 *p = readb(from);
23 p++;
24 from++;
25 }
26}
27
28/*
29 * Copy data from "real" memory space to IO memory space.
30 * This needs to be optimized.
31 */
32void memcpy_toio(unsigned long to, const void * from, unsigned long count)
33{
34 const char *p = from;
35 while (count) {
36 count--;
37 writeb(*p, to);
38 p++;
39 to++;
40 }
41}
42
43/*
44 * "memset" on IO memory space.
45 * This needs to be optimized.
46 */
47void memset_io(unsigned long dst, int c, unsigned long count)
48{
49 while (count) {
50 count--;
51 writeb(c, dst);
52 dst++;
53 }
54}
55
56EXPORT_SYMBOL(memcpy_fromio);
57EXPORT_SYMBOL(memcpy_toio);
58EXPORT_SYMBOL(memset_io);
59