--- 2.2.14-IO-paranoid/include/asm-alpha/core_tsunami.h.~1~ Tue Jan 18 00:10:02 2000 +++ 2.2.14-IO-paranoid/include/asm-alpha/core_tsunami.h Wed Jan 19 05:56:44 2000 @@ -334,35 +334,41 @@ __EXTERN_INLINE unsigned int tsunami_inb(unsigned long addr) { + draina(); + imb(); return __kernel_ldbu(*(vucp)(XADDR + TSUNAMI_IO(XHOSE))); } __EXTERN_INLINE void tsunami_outb(unsigned char b, unsigned long addr) { __kernel_stb(b, *(vucp)(XADDR + TSUNAMI_IO(XHOSE))); - mb(); + tsunami_inb(addr); } __EXTERN_INLINE unsigned int tsunami_inw(unsigned long addr) { + draina(); + imb(); return __kernel_ldwu(*(vusp)(XADDR + TSUNAMI_IO(XHOSE))); } __EXTERN_INLINE void tsunami_outw(unsigned short b, unsigned long addr) { __kernel_stw(b, *(vusp)(XADDR + TSUNAMI_IO(XHOSE))); - mb(); + tsunami_inw(addr); } __EXTERN_INLINE unsigned int tsunami_inl(unsigned long addr) { + draina(); + imb(); return *(vuip)(XADDR + TSUNAMI_IO(XHOSE)); } __EXTERN_INLINE void tsunami_outl(unsigned int b, unsigned long addr) { *(vuip)(XADDR + TSUNAMI_IO(XHOSE)) = b; - mb(); + tsunami_inl(addr); } /* @@ -371,46 +377,54 @@ __EXTERN_INLINE unsigned long tsunami_readb(unsigned long addr) { + draina(); + imb(); return __kernel_ldbu(*(vucp)(XADDR + TSUNAMI_MEM(XHOSE))); } __EXTERN_INLINE unsigned long tsunami_readw(unsigned long addr) { + draina(); + imb(); return __kernel_ldwu(*(vusp)(XADDR + TSUNAMI_MEM(XHOSE))); } __EXTERN_INLINE unsigned long tsunami_readl(unsigned long addr) { + draina(); + imb(); return *(vuip)(XADDR + TSUNAMI_MEM(XHOSE)); } __EXTERN_INLINE unsigned long tsunami_readq(unsigned long addr) { + draina(); + imb(); return *(vulp)(XADDR + TSUNAMI_MEM(XHOSE)); } __EXTERN_INLINE void tsunami_writeb(unsigned char b, unsigned long addr) { __kernel_stb(b, *(vucp)(XADDR + TSUNAMI_MEM(XHOSE))); - mb(); + tsunami_readb(addr); } __EXTERN_INLINE void tsunami_writew(unsigned short b, unsigned long addr) { __kernel_stw(b, *(vusp)(XADDR + TSUNAMI_MEM(XHOSE))); - mb(); + tsunami_readw(addr); } __EXTERN_INLINE void tsunami_writel(unsigned int b, unsigned long addr) { *(vuip)(XADDR + TSUNAMI_MEM(XHOSE)) = b; - mb(); + tsunami_readl(addr); } __EXTERN_INLINE void tsunami_writeq(unsigned long b, unsigned long addr) { *(vulp)(XADDR + TSUNAMI_MEM(XHOSE)) = b; - mb(); + tsunami_readq(addr); } /* Find the DENSE memory area for a given bus address. */