diff options
Diffstat (limited to 'arch/arm/mm/ioremap.c')
-rw-r--r-- | arch/arm/mm/ioremap.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c index ab506272b2d3..bdb248c4f55c 100644 --- a/arch/arm/mm/ioremap.c +++ b/arch/arm/mm/ioremap.c | |||
@@ -289,6 +289,27 @@ __arm_ioremap(unsigned long phys_addr, size_t size, unsigned int mtype) | |||
289 | } | 289 | } |
290 | EXPORT_SYMBOL(__arm_ioremap); | 290 | EXPORT_SYMBOL(__arm_ioremap); |
291 | 291 | ||
292 | /* | ||
293 | * Remap an arbitrary physical address space into the kernel virtual | ||
294 | * address space as memory. Needed when the kernel wants to execute | ||
295 | * code in external memory. This is needed for reprogramming source | ||
296 | * clocks that would affect normal memory for example. Please see | ||
297 | * CONFIG_GENERIC_ALLOCATOR for allocating external memory. | ||
298 | */ | ||
299 | void __iomem * | ||
300 | __arm_ioremap_exec(unsigned long phys_addr, size_t size, bool cached) | ||
301 | { | ||
302 | unsigned int mtype; | ||
303 | |||
304 | if (cached) | ||
305 | mtype = MT_MEMORY; | ||
306 | else | ||
307 | mtype = MT_MEMORY_NONCACHED; | ||
308 | |||
309 | return __arm_ioremap_caller(phys_addr, size, mtype, | ||
310 | __builtin_return_address(0)); | ||
311 | } | ||
312 | |||
292 | void __iounmap(volatile void __iomem *io_addr) | 313 | void __iounmap(volatile void __iomem *io_addr) |
293 | { | 314 | { |
294 | void *addr = (void *)(PAGE_MASK & (unsigned long)io_addr); | 315 | void *addr = (void *)(PAGE_MASK & (unsigned long)io_addr); |