diff options
author | Andrey Smirnov <andrew.smirnov@gmail.com> | 2016-01-10 16:58:10 -0800 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2016-01-11 11:43:07 +0100 |
commit | 78bca2870200731c92b8eb637d2710d3e90f2cec (patch) | |
tree | e8190a8d3de7a8ab55bdc442fa0fff2d8365ed02 /arch | |
parent | 3a0f397e9c381ab9071754b6dbb44cb1cd39f55a (diff) | |
download | barebox-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.h | 20 |
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 */ |