|
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)
|