|
@@ -303,7 +303,6 @@ __ioremap_pfn(unsigned long pfn, unsigned long offset, size_t size,
|
|
|
int err;
|
|
|
unsigned long addr;
|
|
|
struct vm_struct * area;
|
|
|
- unsigned int cr = get_cr();
|
|
|
|
|
|
/*
|
|
|
* High mappings must be supersection aligned
|
|
@@ -317,7 +316,7 @@ __ioremap_pfn(unsigned long pfn, unsigned long offset, size_t size,
|
|
|
addr = (unsigned long)area->addr;
|
|
|
|
|
|
#ifndef CONFIG_SMP
|
|
|
- if ((((cpu_architecture() >= CPU_ARCH_ARMv6) && (cr & CR_XP)) ||
|
|
|
+ if ((((cpu_architecture() >= CPU_ARCH_ARMv6) && (get_cr() & CR_XP)) ||
|
|
|
cpu_is_xsc3()) &&
|
|
|
!((__pfn_to_phys(pfn) | size | addr) & ~SUPERSECTION_MASK)) {
|
|
|
area->flags |= VM_ARM_SECTION_MAPPING;
|
|
@@ -369,6 +368,7 @@ void __iounmap(void __iomem *addr)
|
|
|
|
|
|
addr = (void __iomem *)(PAGE_MASK & (unsigned long)addr);
|
|
|
|
|
|
+#ifndef CONFIG_SMP
|
|
|
/*
|
|
|
* If this is a section based mapping we need to handle it
|
|
|
* specially as the VM subysystem does not know how to handle
|
|
@@ -390,6 +390,7 @@ void __iounmap(void __iomem *addr)
|
|
|
}
|
|
|
}
|
|
|
write_unlock(&vmlist_lock);
|
|
|
+#endif
|
|
|
|
|
|
if (!section_mapping)
|
|
|
vunmap(addr);
|