Skip to content

Commit

Permalink
sh: Tidy up non-translatable checks in iounmap path.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Paul Mundt committed Jan 16, 2010
1 parent 597fe76 commit 78bf04f
Showing 1 changed file with 24 additions and 4 deletions.
28 changes: 24 additions & 4 deletions arch/sh/mm/ioremap_32.c
Original file line number Diff line number Diff line change
Expand Up @@ -105,15 +105,35 @@ void __iomem *__ioremap_caller(unsigned long phys_addr, unsigned long size,
}
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)
{
unsigned long vaddr = (unsigned long __force)addr;
unsigned long seg = PXSEG(vaddr);
struct vm_struct *p;

if (seg < P3SEG || vaddr >= P3_ADDR_MAX)
return;
if (is_pci_memory_fixed_range(vaddr, 0))
/*
* Nothing to do if there is no translatable mapping.
*/
if (iomapping_nontranslatable(vaddr))
return;

#ifdef CONFIG_PMB
Expand Down

0 comments on commit 78bf04f

Please sign in to comment.