On 11 Feb 2005 at 13:51, Christoph Hellwig wrote: > On Fri, Feb 11, 2005 at 02:45:20PM +0100, walter harms wrote: > > void __iomem *)ioaddr->feature_addr); > > this bit looks very wrong. What type is ioaddr->feature_addr? It really > should be a pointer to __iomem and not cast would be needed. > > It is declared as "unsigned long". If you do a findall and grep for feature_addr, you will find that it is used in a lot of math before being stored. So, if you change the declarations of this and the other *_addr structure elements to "volatile void __iomem *" then casting would need to be done on them in the arithmetic statements, which makes less sense because arithmetic is being done on "void *". It's 6 of one, half a dozen of the other. IMHO, my solution is a bit cleaner.