summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorAndrey Smirnov <andrew.smirnov@gmail.com>2016-01-10 16:58:10 -0800
committerSascha Hauer <s.hauer@pengutronix.de>2016-01-11 11:43:07 +0100
commit78bca2870200731c92b8eb637d2710d3e90f2cec (patch)
treee8190a8d3de7a8ab55bdc442fa0fff2d8365ed02 /arch
parent3a0f397e9c381ab9071754b6dbb44cb1cd39f55a (diff)
downloadbarebox-78bca2870200731c92b8eb637d2710d3e90f2cec.tar.gz
barebox-78bca2870200731c92b8eb637d2710d3e90f2cec.tar.xz
ARM: asm: Add convenience fucntions to access VBAR
Add two functions to get/set VBAR register. Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/include/asm/system.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h
index 26fb18c79a..b118a42609 100644
--- a/arch/arm/include/asm/system.h
+++ b/arch/arm/include/asm/system.h
@@ -71,6 +71,26 @@ static inline void set_cr(unsigned int val)
isb();
}
+#ifdef CONFIG_CPU_32v7
+static inline unsigned int get_vbar(void)
+{
+ unsigned int vbar;
+ asm volatile("mrc p15, 0, %0, c12, c0, 0 @ get VBAR"
+ : "=r" (vbar) : : "cc");
+ return vbar;
+}
+
+static inline void set_vbar(unsigned int vbar)
+{
+ asm volatile("mcr p15, 0, %0, c12, c0, 0 @ set VBAR"
+ : : "r" (vbar) : "cc");
+ isb();
+}
+#else
+static inline unsigned int get_vbar(void) { return 0; }
+static inline void set_vbar(unsigned int vbar) {}
+#endif
+
#endif
#endif /* __ASM_ARM_SYSTEM_H */