| .. | .. |
|---|
| 80 | 80 | ({ u16 __v = le16_to_cpu(*(__force volatile u16 *) (addr)); __v; }) |
|---|
| 81 | 81 | |
|---|
| 82 | 82 | #define rom_out_8(addr, b) \ |
|---|
| 83 | | - ({u8 __w, __v = (b); u32 _addr = ((u32) (addr)); \ |
|---|
| 83 | + (void)({u8 __maybe_unused __w, __v = (b); u32 _addr = ((u32) (addr)); \ |
|---|
| 84 | 84 | __w = ((*(__force volatile u8 *) ((_addr | 0x10000) + (__v<<1)))); }) |
|---|
| 85 | 85 | #define rom_out_be16(addr, w) \ |
|---|
| 86 | | - ({u16 __w, __v = (w); u32 _addr = ((u32) (addr)); \ |
|---|
| 86 | + (void)({u16 __maybe_unused __w, __v = (w); u32 _addr = ((u32) (addr)); \ |
|---|
| 87 | 87 | __w = ((*(__force volatile u16 *) ((_addr & 0xFFFF0000UL) + ((__v & 0xFF)<<1)))); \ |
|---|
| 88 | 88 | __w = ((*(__force volatile u16 *) ((_addr | 0x10000) + ((__v >> 8)<<1)))); }) |
|---|
| 89 | 89 | #define rom_out_le16(addr, w) \ |
|---|
| 90 | | - ({u16 __w, __v = (w); u32 _addr = ((u32) (addr)); \ |
|---|
| 90 | + (void)({u16 __maybe_unused __w, __v = (w); u32 _addr = ((u32) (addr)); \ |
|---|
| 91 | 91 | __w = ((*(__force volatile u16 *) ((_addr & 0xFFFF0000UL) + ((__v >> 8)<<1)))); \ |
|---|
| 92 | 92 | __w = ((*(__force volatile u16 *) ((_addr | 0x10000) + ((__v & 0xFF)<<1)))); }) |
|---|
| 93 | 93 | |
|---|
| .. | .. |
|---|
| 107 | 107 | } |
|---|
| 108 | 108 | |
|---|
| 109 | 109 | static inline void raw_outsb(volatile u8 __iomem *port, const u8 *buf, |
|---|
| 110 | | - unsigned int len) |
|---|
| 110 | + unsigned int nr) |
|---|
| 111 | 111 | { |
|---|
| 112 | | - unsigned int i; |
|---|
| 112 | + unsigned int tmp; |
|---|
| 113 | 113 | |
|---|
| 114 | | - for (i = 0; i < len; i++) |
|---|
| 115 | | - out_8(port, *buf++); |
|---|
| 114 | + if (nr & 15) { |
|---|
| 115 | + tmp = (nr & 15) - 1; |
|---|
| 116 | + asm volatile ( |
|---|
| 117 | + "1: moveb %0@+,%2@; dbra %1,1b" |
|---|
| 118 | + : "=a" (buf), "=d" (tmp) |
|---|
| 119 | + : "a" (port), "0" (buf), |
|---|
| 120 | + "1" (tmp)); |
|---|
| 121 | + } |
|---|
| 122 | + if (nr >> 4) { |
|---|
| 123 | + tmp = (nr >> 4) - 1; |
|---|
| 124 | + asm volatile ( |
|---|
| 125 | + "1: " |
|---|
| 126 | + "moveb %0@+,%2@; " |
|---|
| 127 | + "moveb %0@+,%2@; " |
|---|
| 128 | + "moveb %0@+,%2@; " |
|---|
| 129 | + "moveb %0@+,%2@; " |
|---|
| 130 | + "moveb %0@+,%2@; " |
|---|
| 131 | + "moveb %0@+,%2@; " |
|---|
| 132 | + "moveb %0@+,%2@; " |
|---|
| 133 | + "moveb %0@+,%2@; " |
|---|
| 134 | + "moveb %0@+,%2@; " |
|---|
| 135 | + "moveb %0@+,%2@; " |
|---|
| 136 | + "moveb %0@+,%2@; " |
|---|
| 137 | + "moveb %0@+,%2@; " |
|---|
| 138 | + "moveb %0@+,%2@; " |
|---|
| 139 | + "moveb %0@+,%2@; " |
|---|
| 140 | + "moveb %0@+,%2@; " |
|---|
| 141 | + "moveb %0@+,%2@; " |
|---|
| 142 | + "dbra %1,1b" |
|---|
| 143 | + : "=a" (buf), "=d" (tmp) |
|---|
| 144 | + : "a" (port), "0" (buf), |
|---|
| 145 | + "1" (tmp)); |
|---|
| 146 | + } |
|---|
| 116 | 147 | } |
|---|
| 117 | 148 | |
|---|
| 118 | 149 | static inline void raw_insw(volatile u16 __iomem *port, u16 *buf, unsigned int nr) |
|---|