1#include <linux/export.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 */ 9void _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 */ 24void _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 */ 39void _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 48EXPORT_SYMBOL(_memcpy_fromio); 49EXPORT_SYMBOL(_memcpy_toio); 50EXPORT_SYMBOL(_memset_io); 51