1 /* 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 */ 17 void 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 */ 32 void 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 */ 47 void 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 56 EXPORT_SYMBOL(memcpy_fromio); 57 EXPORT_SYMBOL(memcpy_toio); 58 EXPORT_SYMBOL(memset_io); 59 60