Glue again after removal of BUILD_BUG().
authorRalf Baechle <ralf@linux-mips.org>
Fri, 23 Sep 2005 20:02:38 +0000 (20:02 +0000)
committerRalf Baechle <ralf@linux-mips.org>
Sat, 29 Oct 2005 18:32:28 +0000 (19:32 +0100)
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
include/asm-mips/io.h

index 42f80782acd233bf5ced93e14aa1b0ff72b91d09..3061870b7f6cae67d4e9e8e2eebe412ca8456539 100644 (file)
@@ -387,11 +387,11 @@ static inline void pfx##out##bwlq##p(type val, unsigned long port)        \
                                                                        \
        __val = pfx##ioswab##bwlq(val);                                 \
                                                                        \
-       if (sizeof(type) != sizeof(u64)) {                              \
-               *__addr = __val;                                        \
-               slow;                                                   \
-       } else                                                          \
-               BUILD_BUG();                                            \
+       /* Really, we want this to be atomic */                         \
+       BUILD_BUG_ON(sizeof(type) > sizeof(unsigned long));             \
+                                                                       \
+       *__addr = __val;                                                \
+       slow;                                                           \
 }                                                                      \
                                                                        \
 static inline type pfx##in##bwlq##p(unsigned long port)                        \
@@ -402,13 +402,10 @@ static inline type pfx##in##bwlq##p(unsigned long port)                   \
        port = __swizzle_addr_##bwlq(port);                             \
        __addr = (void *)(mips_io_port_base + port);                    \
                                                                        \
-       if (sizeof(type) != sizeof(u64)) {                              \
-               __val = *__addr;                                        \
-               slow;                                                   \
-       } else {                                                        \
-               __val = 0;                                              \
-               BUILD_BUG();                                            \
-       }                                                               \
+       BUILD_BUG_ON(sizeof(type) > sizeof(unsigned long));             \
+                                                                       \
+       __val = *__addr;                                                \
+       slow;                                                           \
                                                                        \
        return pfx##ioswab##bwlq(__val);                                \
 }
@@ -417,28 +414,36 @@ static inline type pfx##in##bwlq##p(unsigned long port)                   \
                                                                        \
 __BUILD_MEMORY_SINGLE(bus, bwlq, type, 1)
 
-#define __BUILD_IOPORT_PFX(bus, bwlq, type)                            \
-                                                                       \
-__BUILD_IOPORT_SINGLE(bus, bwlq, type, ,)                              \
-__BUILD_IOPORT_SINGLE(bus, bwlq, type, _p, SLOW_DOWN_IO)
-
-#define BUILDIO(bwlq, type)                                            \
+#define BUILDIO_MEM(bwlq, type)                                                \
                                                                        \
 __BUILD_MEMORY_PFX(__raw_, bwlq, type)                                 \
 __BUILD_MEMORY_PFX(, bwlq, type)                                       \
 __BUILD_MEMORY_PFX(mem_, bwlq, type)                                   \
-__BUILD_IOPORT_PFX(, bwlq, type)                                       \
-__BUILD_IOPORT_PFX(mem_, bwlq, type)
+
+BUILDIO_MEM(b, u8)
+BUILDIO_MEM(w, u16)
+BUILDIO_MEM(l, u32)
+BUILDIO_MEM(q, u64)
+
+#define __BUILD_IOPORT_PFX(bus, bwlq, type)                            \
+       __BUILD_IOPORT_SINGLE(bus, bwlq, type, ,)                       \
+       __BUILD_IOPORT_SINGLE(bus, bwlq, type, _p, SLOW_DOWN_IO)
+
+#define BUILDIO_IOPORT(bwlq, type)                                     \
+       __BUILD_IOPORT_PFX(, bwlq, type)                                \
+       __BUILD_IOPORT_PFX(mem_, bwlq, type)
+
+BUILDIO_IOPORT(b, u8)
+BUILDIO_IOPORT(w, u16)
+BUILDIO_IOPORT(l, u32)
+#ifdef CONFIG_64BIT
+BUILDIO_IOPORT(q, u64)
+#endif
 
 #define __BUILDIO(bwlq, type)                                          \
                                                                        \
 __BUILD_MEMORY_SINGLE(____raw_, bwlq, type, 0)
 
-BUILDIO(b, u8)
-BUILDIO(w, u16)
-BUILDIO(l, u32)
-BUILDIO(q, u64)
-
 __BUILDIO(q, u64)
 
 #define readb_relaxed                  readb
@@ -508,7 +513,9 @@ __BUILD_IOPORT_STRING(bwlq, type)
 BUILDSTRING(b, u8)
 BUILDSTRING(w, u16)
 BUILDSTRING(l, u32)
+#ifdef CONFIG_64BIT
 BUILDSTRING(q, u64)
+#endif
 
 
 /* Depends on MIPS II instruction set */