summaryrefslogtreecommitdiffstats
path: root/arch/arm/include/asm/io.h
diff options
context:
space:
mode:
authorRob Herring <rob.herring@calxeda.com>2012-02-10 17:05:13 -0600
committerRob Herring <rob.herring@calxeda.com>2012-03-06 21:22:01 -0600
commit4fe7ef3a0811c33137ace0ed424dd0c01dd2d75e (patch)
tree046a63d0c5db517529e86c914bb2fb493a4adee6 /arch/arm/include/asm/io.h
parent47168824fa71b52ca3f4c18ddf0c42ff35192235 (diff)
downloadop-kernel-dev-4fe7ef3a0811c33137ace0ed424dd0c01dd2d75e.zip
op-kernel-dev-4fe7ef3a0811c33137ace0ed424dd0c01dd2d75e.tar.gz
ARM: provide runtime hook for ioremap/iounmap
We have compile time over-ride of ioremap and iounmap, but an run-time override is needed for multi-platform builds. This adds an extra function pointer check, but ioremap is not peformance critical. The option for compile time selection remains. The caller variant is used here to provide correct caller information as ARM can only support level 0 for __builtin_return_address. Signed-off-by: Rob Herring <rob.herring@calxeda.com> Cc: Russell King <linux@arm.linux.org.uk> Reviewed-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Nicolas Pitre <nico@linaro.org>
Diffstat (limited to 'arch/arm/include/asm/io.h')
-rw-r--r--arch/arm/include/asm/io.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h
index 9275828..6c363c1 100644
--- a/arch/arm/include/asm/io.h
+++ b/arch/arm/include/asm/io.h
@@ -83,6 +83,11 @@ extern void __iomem *__arm_ioremap_pfn(unsigned long, unsigned long, size_t, uns
extern void __iomem *__arm_ioremap(unsigned long, size_t, unsigned int);
extern void __iomem *__arm_ioremap_exec(unsigned long, size_t, bool cached);
extern void __iounmap(volatile void __iomem *addr);
+extern void __arm_iounmap(volatile void __iomem *addr);
+
+extern void __iomem * (*arch_ioremap_caller)(unsigned long, size_t,
+ unsigned int, void *);
+extern void (*arch_iounmap)(volatile void __iomem *);
/*
* Bad read/write accesses...
@@ -266,7 +271,7 @@ extern void _memset_io(volatile void __iomem *, int, size_t);
*/
#ifndef __arch_ioremap
#define __arch_ioremap __arm_ioremap
-#define __arch_iounmap __iounmap
+#define __arch_iounmap __arm_iounmap
#endif
#define ioremap(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE)
OpenPOWER on IntegriCloud