From: Paul M. <le...@us...> - 2001-09-15 20:04:11
|
Update of /cvsroot/linux-mips/linux/include/asm-mips In directory usw-pr-cvs1:/tmp/cvs-serv21595/include/asm-mips Modified Files: io.h Log Message: Applied patch to fix complex expressions that were causing vgacon to not build on certain boards. Index: io.h =================================================================== RCS file: /cvsroot/linux-mips/linux/include/asm-mips/io.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** io.h 2001/09/15 20:02:58 1.4 --- io.h 2001/09/15 20:04:08 1.5 *************** *** 113,116 **** --- 113,117 ---- } + /* * IO bus memory addresses are also 1:1 with the physical address *************** *** 228,237 **** #define __OUT(m,s,w) \ __OUT1(s) __OUT2(m) : : "r" (__ioswab##w(value)), "i" (0), "r" (mips_io_port_base+port)); } \ - __OUT1(s##c) __OUT2(m) : : "r" (__ioswab##w(value)), "ir" (port), "r" (mips_io_port_base)); } \ __OUT1(s##_p) __OUT2(m) : : "r" (__ioswab##w(value)), "i" (0), "r" (mips_io_port_base+port)); \ - SLOW_DOWN_IO; } \ - __OUT1(s##c_p) __OUT2(m) : : "r" (__ioswab##w(value)), "ir" (port), "r" (mips_io_port_base)); \ SLOW_DOWN_IO; } #define __IN1(t,s) \ extern __inline__ t __in##s(unsigned int port) { t _v; --- 229,247 ---- #define __OUT(m,s,w) \ __OUT1(s) __OUT2(m) : : "r" (__ioswab##w(value)), "i" (0), "r" (mips_io_port_base+port)); } \ __OUT1(s##_p) __OUT2(m) : : "r" (__ioswab##w(value)), "i" (0), "r" (mips_io_port_base+port)); \ SLOW_DOWN_IO; } + #define __OUTMAC(m,w,value,port) ({ __OUT2(m) : : "r" (__ioswab##w(value)), "i#*X" (port), \ + "r" (mips_io_port_base)); }) + #define __OUTMAC_P(m,w,value,port) ({ __OUT2(m) : : "r" (__ioswab##w(value)), "i#*X" (port), \ + "r" (mips_io_port_base)); SLOW_DOWN_IO; }) + + #define __outbc(value,port) __OUTMAC(b,8,value,port) + #define __outwc(value,port) __OUTMAC(h,16,value,port) + #define __outlc(value,port) __OUTMAC(w,32,value,port) + #define __outbc_p(value,port) __OUTMAC_P(b,8,value,port) + #define __outwc_p(value,port) __OUTMAC_P(h,16,value,port) + #define __outlc_p(value,port) __OUTMAC_P(w,32,value,port) + #define __IN1(t,s) \ extern __inline__ t __in##s(unsigned int port) { t _v; *************** *** 245,256 **** #define __IN(t,m,s,w) \ __IN1(t,s) __IN2(m) : "=r" (_v) : "i" (0), "r" (mips_io_port_base+port)); return __ioswab##w(_v); } \ ! __IN1(t,s##c) __IN2(m) : "=r" (_v) : "ir" (port), "r" (mips_io_port_base)); return __ioswab##w(_v); } \ ! __IN1(t,s##_p) __IN2(m) : "=r" (_v) : "i" (0), "r" (mips_io_port_base+port)); SLOW_DOWN_IO; return __ioswab##w(_v); } \ ! __IN1(t,s##c_p) __IN2(m) : "=r" (_v) : "ir" (port), "r" (mips_io_port_base)); SLOW_DOWN_IO; return __ioswab##w(_v); } #define __INS1(s) \ extern inline void __ins##s(unsigned int port, void * addr, unsigned long count) { ! #define __INS2(m) \ if (count) \ __asm__ __volatile__ ( \ --- 255,276 ---- #define __IN(t,m,s,w) \ __IN1(t,s) __IN2(m) : "=r" (_v) : "i" (0), "r" (mips_io_port_base+port)); return __ioswab##w(_v); } \ ! __IN1(t,s##_p) __IN2(m) : "=r" (_v) : "i" (0), "r" (mips_io_port_base+port)); SLOW_DOWN_IO; return __ioswab##w(_v); } + #define __INMAC(t,m,w,port) ({ t _v; __IN2(m) : "=r" (_v) : "i#*X" (port), \ + "r" (mips_io_port_base)); __ioswab##w(_v); }) + #define __INMAC_P(t,m,w,port) ({ t _v; __IN2(m) : "=r" (_v) : "i#*X" (port), \ + "r" (mips_io_port_base)); SLOW_DOWN_IO; __ioswab##w(_v); }) + + #define __inbc(port) __INMAC(unsigned char,b,8,port) + #define __inwc(port) __INMAC(unsigned short,h,16,port) + #define __inlc(port) __INMAC(unsigned int,w,32,port) + #define __inbc_p(port) __INMAC_P(unsigned char,b,8,port) + #define __inwc_p(port) __INMAC_P(unsigned short,h,16,port) + #define __inlc_p(port) __INMAC_P(unsigned int,w,32,port) + #define __INS1(s) \ extern inline void __ins##s(unsigned int port, void * addr, unsigned long count) { ! #define __INS2(m,count) \ if (count) \ __asm__ __volatile__ ( \ *************** *** 266,284 **** #define __INS(m,s,i) \ ! __INS1(s) __INS2(m) \ : "=r" (addr), "=r" (count) \ : "0" (addr), "1" (count), "i" (0), \ "r" (mips_io_port_base+port), "I" (i) \ - : "$1");} \ - __INS1(s##c) __INS2(m) \ - : "=r" (addr), "=r" (count) \ - : "0" (addr), "1" (count), "ir" (port), \ - "r" (mips_io_port_base), "I" (i) \ : "$1");} #define __OUTS1(s) \ extern inline void __outs##s(unsigned int port, const void * addr, unsigned long count) { ! #define __OUTS2(m) \ if (count) \ __asm__ __volatile__ ( \ --- 286,309 ---- #define __INS(m,s,i) \ ! __INS1(s) __INS2(m,count) \ : "=r" (addr), "=r" (count) \ : "0" (addr), "1" (count), "i" (0), \ "r" (mips_io_port_base+port), "I" (i) \ : "$1");} + #define __INSMAC(m,i,port,addr,count) ({ void *_a = (addr); unsigned long _c = (count); \ + __INS2(m,_c) \ + : "=r" (_a), "=r" (_c) \ + : "0" (_a), "1" (_c), "i#*X" (port), \ + "r" (mips_io_port_base), "I" (i) \ + : "$1"); }) + #define __insbc(port,addr,count) __INSMAC(b,1,port,addr,count) + #define __inswc(port,addr,count) __INSMAC(h,2,port,addr,count) + #define __inslc(port,addr,count) __INSMAC(w,4,port,addr,count) + #define __OUTS1(s) \ extern inline void __outs##s(unsigned int port, const void * addr, unsigned long count) { ! #define __OUTS2(m,count) \ if (count) \ __asm__ __volatile__ ( \ *************** *** 294,305 **** #define __OUTS(m,s,i) \ ! __OUTS1(s) __OUTS2(m) \ : "=r" (addr), "=r" (count) \ : "0" (addr), "1" (count), "i" (0), "r" (mips_io_port_base+port), "I" (i) \ - : "$1");} \ - __OUTS1(s##c) __OUTS2(m) \ - : "=r" (addr), "=r" (count) \ - : "0" (addr), "1" (count), "ir" (port), "r" (mips_io_port_base), "I" (i) \ : "$1");} __IN(unsigned char,b,b,8) --- 319,335 ---- #define __OUTS(m,s,i) \ ! __OUTS1(s) __OUTS2(m,count) \ : "=r" (addr), "=r" (count) \ : "0" (addr), "1" (count), "i" (0), "r" (mips_io_port_base+port), "I" (i) \ : "$1");} + + #define __OUTSMAC(m,i,port,addr,count) ({ void *_a = (addr); unsigned long _c = (count); \ + __OUTS2(m,_c) \ + : "=r" (_a), "=r" (_c) \ + : "0" (_a), "1" (_c), "i#*X" (port), "r" (mips_io_port_base), "I" (i) \ + : "$1"); }) + #define __outsbc(port,addr,count) __OUTSMAC(b,1,port,addr,count) + #define __outswc(port,addr,count) __OUTSMAC(h,2,port,addr,count) + #define __outslc(port,addr,count) __OUTSMAC(w,4,port,addr,count) __IN(unsigned char,b,b,8) |