diff options
Diffstat (limited to 'arch/arm/mm/ioremap.c')
| -rw-r--r-- | arch/arm/mm/ioremap.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c index 7eac87f05180..dba7dddfe57d 100644 --- a/arch/arm/mm/ioremap.c +++ b/arch/arm/mm/ioremap.c | |||
| @@ -303,7 +303,6 @@ __ioremap_pfn(unsigned long pfn, unsigned long offset, size_t size, | |||
| 303 | int err; | 303 | int err; |
| 304 | unsigned long addr; | 304 | unsigned long addr; |
| 305 | struct vm_struct * area; | 305 | struct vm_struct * area; |
| 306 | unsigned int cr = get_cr(); | ||
| 307 | 306 | ||
| 308 | /* | 307 | /* |
| 309 | * High mappings must be supersection aligned | 308 | * High mappings must be supersection aligned |
| @@ -317,7 +316,7 @@ __ioremap_pfn(unsigned long pfn, unsigned long offset, size_t size, | |||
| 317 | addr = (unsigned long)area->addr; | 316 | addr = (unsigned long)area->addr; |
| 318 | 317 | ||
| 319 | #ifndef CONFIG_SMP | 318 | #ifndef CONFIG_SMP |
| 320 | if ((((cpu_architecture() >= CPU_ARCH_ARMv6) && (cr & CR_XP)) || | 319 | if ((((cpu_architecture() >= CPU_ARCH_ARMv6) && (get_cr() & CR_XP)) || |
| 321 | cpu_is_xsc3()) && | 320 | cpu_is_xsc3()) && |
| 322 | !((__pfn_to_phys(pfn) | size | addr) & ~SUPERSECTION_MASK)) { | 321 | !((__pfn_to_phys(pfn) | size | addr) & ~SUPERSECTION_MASK)) { |
| 323 | area->flags |= VM_ARM_SECTION_MAPPING; | 322 | area->flags |= VM_ARM_SECTION_MAPPING; |
| @@ -369,6 +368,7 @@ void __iounmap(void __iomem *addr) | |||
| 369 | 368 | ||
| 370 | addr = (void __iomem *)(PAGE_MASK & (unsigned long)addr); | 369 | addr = (void __iomem *)(PAGE_MASK & (unsigned long)addr); |
| 371 | 370 | ||
| 371 | #ifndef CONFIG_SMP | ||
| 372 | /* | 372 | /* |
| 373 | * If this is a section based mapping we need to handle it | 373 | * If this is a section based mapping we need to handle it |
| 374 | * specially as the VM subysystem does not know how to handle | 374 | * specially as the VM subysystem does not know how to handle |
| @@ -390,6 +390,7 @@ void __iounmap(void __iomem *addr) | |||
| 390 | } | 390 | } |
| 391 | } | 391 | } |
| 392 | write_unlock(&vmlist_lock); | 392 | write_unlock(&vmlist_lock); |
| 393 | #endif | ||
| 393 | 394 | ||
| 394 | if (!section_mapping) | 395 | if (!section_mapping) |
| 395 | vunmap(addr); | 396 | vunmap(addr); |
