title: What is the use of __iomem in linux while writing device drivers?
body: <p>I have seen that <code>__iomem</code> is used to store the return type of <code>ioremap()</code>, but I have used <code>u32</code> in ARM architecture for it and it works well.</p>
  
  <p>So what difference does <code>__iomem</code> make here? And in which circumstances should I use it exactly?</p>