diff --git a/arch/x86/mm/ioremap_32.c b/arch/x86/mm/ioremap_32.c index ae7e55c8c647ffdb9d724bc6cf3b5c12d3869133..5273ac4aa96a7e0bfc46a7ae597acb0ee4085603 100644 --- a/arch/x86/mm/ioremap_32.c +++ b/arch/x86/mm/ioremap_32.c @@ -81,7 +81,7 @@ void __iomem *__ioremap(unsigned long phys_addr, unsigned long size, * 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.. diff --git a/arch/x86/mm/ioremap_64.c b/arch/x86/mm/ioremap_64.c index bb9246c4a07b1378ace2f5f5cea2cc54d83dfa18..e79d2b353de0e4aaa740e861081cc09eec84f41e 100644 --- a/arch/x86/mm/ioremap_64.c +++ b/arch/x86/mm/ioremap_64.c @@ -70,7 +70,7 @@ static int ioremap_change_attr(unsigned long phys_addr, unsigned long size, 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; @@ -101,7 +101,7 @@ void __iomem *__ioremap(unsigned long phys_addr, unsigned long size, 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)); @@ -111,7 +111,7 @@ void __iomem *__ioremap(unsigned long phys_addr, unsigned long size, vunmap(addr); return NULL; } - return (__force void __iomem *) (offset + (char *)addr); + return (void __iomem *) (offset + (char __iomem *)addr); } EXPORT_SYMBOL(__ioremap); @@ -152,7 +152,7 @@ void iounmap(volatile void __iomem *addr) { 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))