* Don't remap the low PCI/ISA area, it's always mapped..
         */
        if (phys_addr >= ISA_START_ADDRESS && last_addr < ISA_END_ADDRESS)
-               return (void __iomem *) phys_to_virt(phys_addr);
+               return (__force void __iomem *)phys_to_virt(phys_addr);
 
        /*
         * Don't allow anybody to remap normal RAM that we're using..
 
 void __iomem *__ioremap(unsigned long phys_addr, unsigned long size,
                        unsigned long flags)
 {
-       void *addr;
+       void __iomem *addr;
        struct vm_struct *area;
        unsigned long offset, last_addr;
        pgprot_t pgprot;
        if (!area)
                return NULL;
        area->phys_addr = phys_addr;
-       addr = area->addr;
+       addr = (void __iomem *) area->addr;
        if (ioremap_page_range((unsigned long)addr, (unsigned long)addr + size,
                               phys_addr, pgprot)) {
                remove_vm_area((void *)(PAGE_MASK & (unsigned long) addr));
                vunmap(addr);
                return NULL;
        }
-       return (__force void __iomem *) (offset + (char *)addr);
+       return (void __iomem *) (offset + (char __iomem *)addr);
 }
 EXPORT_SYMBOL(__ioremap);
 
 {
        struct vm_struct *p, *o;
 
-       if (addr <= high_memory)
+       if ((void __force *)addr <= high_memory)
                return;
        if (addr >= phys_to_virt(ISA_START_ADDRESS) &&
            addr < phys_to_virt(ISA_END_ADDRESS))