sh: Tidy up non-translatable checks in iounmap path.

This tidies up the iounmap path with consolidated checks for
nontranslatable mappings. This is in preparation of unifying
the implementations.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
Paul Mundt 2010-01-17 01:45:26 +09:00
parent 597fe76ec3
commit 78bf04fc96

View file

@ -105,15 +105,35 @@ void __iomem *__ioremap_caller(unsigned long phys_addr, unsigned long size,
} }
EXPORT_SYMBOL(__ioremap_caller); EXPORT_SYMBOL(__ioremap_caller);
/*
* Simple checks for non-translatable mappings.
*/
static inline int iomapping_nontranslatable(unsigned long offset)
{
#ifdef CONFIG_29BIT
/*
* In 29-bit mode this includes the fixed P1/P2 areas, as well as
* parts of P3.
*/
if (PXSEG(offset) < P3SEG || offset >= P3_ADDR_MAX)
return 1;
#endif
if (is_pci_memory_fixed_range(offset, 0))
return 1;
return 0;
}
void __iounmap(void __iomem *addr) void __iounmap(void __iomem *addr)
{ {
unsigned long vaddr = (unsigned long __force)addr; unsigned long vaddr = (unsigned long __force)addr;
unsigned long seg = PXSEG(vaddr);
struct vm_struct *p; struct vm_struct *p;
if (seg < P3SEG || vaddr >= P3_ADDR_MAX) /*
return; * Nothing to do if there is no translatable mapping.
if (is_pci_memory_fixed_range(vaddr, 0)) */
if (iomapping_nontranslatable(vaddr))
return; return;
#ifdef CONFIG_PMB #ifdef CONFIG_PMB