vserver 1.9.3
[linux-2.6.git] / drivers / net / smc91x.h
index 7679022..cf74b74 100644 (file)
@@ -160,6 +160,19 @@ SMC_outw(u16 val, unsigned long ioaddr, int reg)
 #define SMC_insw(a, r, p, l)   insw((a) + (r), p, l)
 #define SMC_outsw(a, r, p, l)  outsw((a) + (r), p, l)
 
+#elif   defined(CONFIG_M32R)
+
+#define SMC_CAN_USE_8BIT       0
+#define SMC_CAN_USE_16BIT      1
+#define SMC_CAN_USE_32BIT      0
+
+#define SMC_inb(a, r)          inb((a) + (r) - 0xa0000000)
+#define SMC_inw(a, r)          inw((a) + (r) - 0xa0000000)
+#define SMC_outb(v, a, r)      outb(v, (a) + (r) - 0xa0000000)
+#define SMC_outw(v, a, r)      outw(v, (a) + (r) - 0xa0000000)
+#define SMC_insw(a, r, p, l)   insw((a) + (r) - 0xa0000000, p, l)
+#define SMC_outsw(a, r, p, l)  outsw((a) + (r) - 0xa0000000, p, l)
+
 #else
 
 #define SMC_CAN_USE_8BIT       1
@@ -809,9 +822,10 @@ static const char * chip_ids[ 16 ] =  {
        do {                                                            \
                char *__ptr = (p);                                      \
                int __len = (l);                                        \
-               if (__len >= 2 && (long)__ptr & 2) {                    \
+               if (__len >= 2 && (unsigned long)__ptr & 2) {           \
                        __len -= 2;                                     \
-                       SMC_outw( *((u16 *)__ptr)++, ioaddr, DATA_REG );\
+                       SMC_outw( *(u16 *)__ptr, ioaddr, DATA_REG );    \
+                       __ptr += 2;                                     \
                }                                                       \
                SMC_outsl( ioaddr, DATA_REG, __ptr, __len >> 2);        \
                if (__len & 2) {                                        \
@@ -823,7 +837,7 @@ static const char * chip_ids[ 16 ] =  {
        do {                                                            \
                char *__ptr = (p);                                      \
                int __len = (l);                                        \
-               if ((long)__ptr & 2) {                                  \
+               if ((unsigned long)__ptr & 2) {                         \
                        /*                                              \
                         * We want 32bit alignment here.                \
                         * Since some buses perform a full 32bit        \
@@ -831,7 +845,7 @@ static const char * chip_ids[ 16 ] =  {
                         * SMC_inw() here.  Back both source (on chip   \
                         * and destination) pointers of 2 bytes.        \
                         */                                             \
-                       (long)__ptr &= ~2;                              \
+                       __ptr -= 2;                                     \
                        __len += 2;                                     \
                        SMC_SET_PTR( 2|PTR_READ|PTR_RCV|PTR_AUTOINC );  \
                }                                                       \