26 lines
		
	
	
		
			597 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			597 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <linux/string.h>
 | |
| #include <linux/module.h>
 | |
| #include <asm/io.h>
 | |
| 
 | |
| void __memcpy_toio(unsigned long dst, const void *src, unsigned len)
 | |
| {
 | |
| 	__inline_memcpy((void *)dst, src, len);
 | |
| }
 | |
| EXPORT_SYMBOL(__memcpy_toio);
 | |
| 
 | |
| void __memcpy_fromio(void *dst, unsigned long src, unsigned len)
 | |
| {
 | |
| 	__inline_memcpy(dst, (const void *)src, len);
 | |
| }
 | |
| EXPORT_SYMBOL(__memcpy_fromio);
 | |
| 
 | |
| void memset_io(volatile void __iomem *a, int b, size_t c)
 | |
| {
 | |
| 	/*
 | |
| 	 * TODO: memset can mangle the IO patterns quite a bit.
 | |
| 	 * perhaps it would be better to use a dumb one:
 | |
| 	 */
 | |
| 	memset((void *)a, b, c);
 | |
| }
 | |
| EXPORT_SYMBOL(memset_io);
 |