diff -urP linux-2.6.6/include/asm-sparc/io.h linux-2.6.6-mw1/include/asm-sparc/io.h --- linux-2.6.6/include/asm-sparc/io.h Mon May 10 04:32:00 2004 +++ linux-2.6.6-mw1/include/asm-sparc/io.h Wed May 26 13:26:38 2004 @@ -207,6 +207,70 @@ return (void *) dst; } +static inline void * +_memset_io(void *dst, int c, __kernel_size_t n) +{ + char *d = dst; + + while (n--) { + writeb(c, d); + d++; + } + + return dst; +} + +#define memset_io(d,c,sz) \ + _memset_io((void *)d,(int)c,(__kernel_size_t)sz) + +static inline void * +_memcpy_fromio(void *dst, unsigned long src, __kernel_size_t n) +{ + char *d = dst; + + while (n--) { + char tmp = readb(src); + *d++ = tmp; + src++; + } + + return dst; +} + +#define memcpy_fromio(d,s,sz) \ + _memcpy_fromio((void *)d,(unsigned long)s,(__kernel_size_t)sz) + +static inline void * +_memcpy_toio(unsigned long dst, const void *src, __kernel_size_t n) +{ + const char *s = src; + unsigned long d = dst; + + while (n--) { + char tmp = *s++; + writeb(tmp, d); + d++; + } + return (void *)dst; +} + +#define memcpy_toio(d,s,sz) \ + _memcpy_toio((unsigned long)d,(const void *)s,(__kernel_size_t)sz) + +static inline int check_signature(unsigned long io_addr, + const unsigned char *signature, + int length) +{ + int retval = 0; + do { + if (readb(io_addr++) != *signature++) + goto out; + } while (--length); + retval = 1; +out: + return retval; +} + #ifdef __KERNEL__ /*