Loading arch/sh/mm/ioremap_32.c +24 −4 Original line number Diff line number Diff line Loading @@ -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 Loading Loading
arch/sh/mm/ioremap_32.c +24 −4 Original line number Diff line number Diff line Loading @@ -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 Loading