Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[PATCH] frv: basic __iomem annotations

Add annotations to the FRV I/O handling functions for sparse.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by

Al Viro and committed by
Linus Torvalds
3f4cd389 a8a77573

+41 -30
+3 -3
arch/frv/mm/kmap.c
··· 31 31 * Map some physical address range into the kernel address space. 32 32 */ 33 33 34 - void *__ioremap(unsigned long physaddr, unsigned long size, int cacheflag) 34 + void __iomem *__ioremap(unsigned long physaddr, unsigned long size, int cacheflag) 35 35 { 36 - return (void *)physaddr; 36 + return (void __iomem *)physaddr; 37 37 } 38 38 39 39 /* 40 40 * Unmap a ioremap()ed region again 41 41 */ 42 - void iounmap(void *addr) 42 + void iounmap(void volatile __iomem *addr) 43 43 { 44 44 } 45 45
+19 -19
include/asm-frv/io.h
··· 40 40 //#define __iormb() asm volatile("membar") 41 41 //#define __iowmb() asm volatile("membar") 42 42 43 - #define __raw_readb(addr) __builtin_read8((void *) (addr)) 44 - #define __raw_readw(addr) __builtin_read16((void *) (addr)) 45 - #define __raw_readl(addr) __builtin_read32((void *) (addr)) 43 + #define __raw_readb __builtin_read8 44 + #define __raw_readw __builtin_read16 45 + #define __raw_readl __builtin_read32 46 46 47 - #define __raw_writeb(datum, addr) __builtin_write8((void *) (addr), datum) 48 - #define __raw_writew(datum, addr) __builtin_write16((void *) (addr), datum) 49 - #define __raw_writel(datum, addr) __builtin_write32((void *) (addr), datum) 47 + #define __raw_writeb(datum, addr) __builtin_write8(addr, datum) 48 + #define __raw_writew(datum, addr) __builtin_write16(addr, datum) 49 + #define __raw_writel(datum, addr) __builtin_write32(addr, datum) 50 50 51 51 static inline void io_outsb(unsigned int addr, const void *buf, int len) 52 52 { ··· 128 128 129 129 static inline uint8_t inb(unsigned long addr) 130 130 { 131 - return __builtin_read8((void *)addr); 131 + return __builtin_read8((void __iomem *)addr); 132 132 } 133 133 134 134 static inline uint16_t inw(unsigned long addr) 135 135 { 136 - uint16_t ret = __builtin_read16((void *)addr); 136 + uint16_t ret = __builtin_read16((void __iomem *)addr); 137 137 138 138 if (__is_PCI_IO(addr)) 139 139 ret = _swapw(ret); ··· 143 143 144 144 static inline uint32_t inl(unsigned long addr) 145 145 { 146 - uint32_t ret = __builtin_read32((void *)addr); 146 + uint32_t ret = __builtin_read32((void __iomem *)addr); 147 147 148 148 if (__is_PCI_IO(addr)) 149 149 ret = _swapl(ret); ··· 153 153 154 154 static inline void outb(uint8_t datum, unsigned long addr) 155 155 { 156 - __builtin_write8((void *)addr, datum); 156 + __builtin_write8((void __iomem *)addr, datum); 157 157 } 158 158 159 159 static inline void outw(uint16_t datum, unsigned long addr) 160 160 { 161 161 if (__is_PCI_IO(addr)) 162 162 datum = _swapw(datum); 163 - __builtin_write16((void *)addr, datum); 163 + __builtin_write16((void __iomem *)addr, datum); 164 164 } 165 165 166 166 static inline void outl(uint32_t datum, unsigned long addr) 167 167 { 168 168 if (__is_PCI_IO(addr)) 169 169 datum = _swapl(datum); 170 - __builtin_write32((void *)addr, datum); 170 + __builtin_write32((void __iomem *)addr, datum); 171 171 } 172 172 173 173 #define inb_p(addr) inb(addr) ··· 189 189 190 190 static inline uint8_t readb(const volatile void __iomem *addr) 191 191 { 192 - return __builtin_read8((volatile uint8_t __force *) addr); 192 + return __builtin_read8((__force void volatile __iomem *) addr); 193 193 } 194 194 195 195 static inline uint16_t readw(const volatile void __iomem *addr) 196 196 { 197 - uint16_t ret = __builtin_read16((volatile uint16_t __force *)addr); 197 + uint16_t ret = __builtin_read16((__force void volatile __iomem *)addr); 198 198 199 199 if (__is_PCI_MEM(addr)) 200 200 ret = _swapw(ret); ··· 203 203 204 204 static inline uint32_t readl(const volatile void __iomem *addr) 205 205 { 206 - uint32_t ret = __builtin_read32((volatile uint32_t __force *)addr); 206 + uint32_t ret = __builtin_read32((__force void volatile __iomem *)addr); 207 207 208 208 if (__is_PCI_MEM(addr)) 209 209 ret = _swapl(ret); ··· 217 217 218 218 static inline void writeb(uint8_t datum, volatile void __iomem *addr) 219 219 { 220 - __builtin_write8((volatile uint8_t __force *) addr, datum); 220 + __builtin_write8(addr, datum); 221 221 if (__is_PCI_MEM(addr)) 222 222 __flush_PCI_writes(); 223 223 } ··· 227 227 if (__is_PCI_MEM(addr)) 228 228 datum = _swapw(datum); 229 229 230 - __builtin_write16((volatile uint16_t __force *) addr, datum); 230 + __builtin_write16(addr, datum); 231 231 if (__is_PCI_MEM(addr)) 232 232 __flush_PCI_writes(); 233 233 } ··· 237 237 if (__is_PCI_MEM(addr)) 238 238 datum = _swapl(datum); 239 239 240 - __builtin_write32((volatile uint32_t __force *) addr, datum); 240 + __builtin_write32(addr, datum); 241 241 if (__is_PCI_MEM(addr)) 242 242 __flush_PCI_writes(); 243 243 } ··· 271 271 return __ioremap(physaddr, size, IOMAP_FULL_CACHING); 272 272 } 273 273 274 - extern void iounmap(void __iomem *addr); 274 + extern void iounmap(void volatile __iomem *addr); 275 275 276 276 static inline void __iomem *ioport_map(unsigned long port, unsigned int nr) 277 277 {
+19 -8
include/asm-frv/mb-regs.h
··· 16 16 #include <asm/sections.h> 17 17 #include <asm/mem-layout.h> 18 18 19 + #ifndef __ASSEMBLY__ 20 + /* gcc builtins, annotated */ 21 + 22 + unsigned long __builtin_read8(volatile void __iomem *); 23 + unsigned long __builtin_read16(volatile void __iomem *); 24 + unsigned long __builtin_read32(volatile void __iomem *); 25 + void __builtin_write8(volatile void __iomem *, unsigned char); 26 + void __builtin_write16(volatile void __iomem *, unsigned short); 27 + void __builtin_write32(volatile void __iomem *, unsigned long); 28 + #endif 29 + 19 30 #define __region_IO KERNEL_IO_START /* the region from 0xe0000000 to 0xffffffff has suitable 20 31 * protection laid over the top for use in memory-mapped 21 32 * I/O ··· 70 59 #define __region_PCI_MEM (__region_CS2 + 0x08000000UL) 71 60 #define __flush_PCI_writes() \ 72 61 do { \ 73 - __builtin_write8((volatile void *) __region_PCI_MEM, 0); \ 62 + __builtin_write8((volatile void __iomem *) __region_PCI_MEM, 0); \ 74 63 } while(0) 75 64 76 65 #define __is_PCI_IO(addr) \ ··· 94 83 #define __set_LEDS(X) \ 95 84 do { \ 96 85 if (mb93090_mb00_detected) \ 97 - __builtin_write32((void *) __addr_LEDS(), ~(X)); \ 86 + __builtin_write32((void __iomem *) __addr_LEDS(), ~(X)); \ 98 87 } while (0) 99 88 #else 100 89 #define __set_LEDS(X) 101 90 #endif 102 91 103 92 #define __addr_LCD() (__region_CS2 + 0x01200008UL) 104 - #define __get_LCD(B) __builtin_read32((volatile void *) (B)) 105 - #define __set_LCD(B,X) __builtin_write32((volatile void *) (B), (X)) 93 + #define __get_LCD(B) __builtin_read32((volatile void __iomem *) (B)) 94 + #define __set_LCD(B,X) __builtin_write32((volatile void __iomem *) (B), (X)) 106 95 107 96 #define LCD_D 0x000000ff /* LCD data bus */ 108 97 #define LCD_RW 0x00000100 /* LCD R/W signal */ ··· 172 161 #define __get_CLKIN() 66000000UL 173 162 174 163 #define __addr_LEDS() (__region_CS2 + 0x00000023UL) 175 - #define __set_LEDS(X) __builtin_write8((volatile void *) __addr_LEDS(), (X)) 164 + #define __set_LEDS(X) __builtin_write8((volatile void __iomem *) __addr_LEDS(), (X)) 176 165 177 166 #define __addr_FPGATR() (__region_CS2 + 0x00000030UL) 178 - #define __set_FPGATR(X) __builtin_write32((volatile void *) __addr_FPGATR(), (X)) 179 - #define __get_FPGATR() __builtin_read32((volatile void *) __addr_FPGATR()) 167 + #define __set_FPGATR(X) __builtin_write32((volatile void __iomem *) __addr_FPGATR(), (X)) 168 + #define __get_FPGATR() __builtin_read32((volatile void __iomem *) __addr_FPGATR()) 180 169 181 170 #define MB93093_FPGA_FPGATR_AUDIO_CLK 0x00000003 182 171 ··· 191 180 #define MB93093_FPGA_SWR_PUSHSWMASK (0x1F<<26) 192 181 #define MB93093_FPGA_SWR_PUSHSW4 (1<<29) 193 182 194 - #define __addr_FPGA_SWR ((volatile void *)(__region_CS2 + 0x28UL)) 183 + #define __addr_FPGA_SWR ((volatile void __iomem *)(__region_CS2 + 0x28UL)) 195 184 #define __get_FPGA_PUSHSW1_5() (__builtin_read32(__addr_FPGA_SWR) & MB93093_FPGA_SWR_PUSHSWMASK) 196 185 197 186