summaryrefslogtreecommitdiffstats
path: root/arch/arm/cpu
diff options
context:
space:
mode:
authorAndrey Smirnov <andrew.smirnov@gmail.com>2018-06-14 21:21:02 -0700
committerSascha Hauer <s.hauer@pengutronix.de>2018-06-18 08:59:04 +0200
commit9fe4ab90d0c8aab15fee9de78a804dd2d564f180 (patch)
tree67509b63a75da5e72b3e93a2f2817bc9db8a71d0 /arch/arm/cpu
parentb1f7b45ba88ea27529e4188f58f266adb54d700d (diff)
downloadbarebox-9fe4ab90d0c8aab15fee9de78a804dd2d564f180.tar.gz
barebox-9fe4ab90d0c8aab15fee9de78a804dd2d564f180.tar.xz
ARM: mmu: psci: Make use of get_ttbr()
Introduce a simple inline function to get TTBR and use it in mmu.c and sm.c Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/cpu')
-rw-r--r--arch/arm/cpu/mmu.c4
-rw-r--r--arch/arm/cpu/mmu.h9
-rw-r--r--arch/arm/cpu/sm.c3
3 files changed, 11 insertions, 5 deletions
diff --git a/arch/arm/cpu/mmu.c b/arch/arm/cpu/mmu.c
index 7e2e5bf7e0..9e765514dc 100644
--- a/arch/arm/cpu/mmu.c
+++ b/arch/arm/cpu/mmu.c
@@ -453,10 +453,8 @@ static int mmu_init(void)
* Early MMU code has already enabled the MMU. We assume a
* flat 1:1 section mapping in this case.
*/
- asm volatile ("mrc p15,0,%0,c2,c0,0" : "=r"(ttb));
-
/* Clear unpredictable bits [13:0] */
- ttb = (uint32_t *)((unsigned long)ttb & ~0x3fff);
+ ttb = (uint32_t *)(get_ttbr() & ~0x3fff);
if (!request_sdram_region("ttb", (unsigned long)ttb, SZ_16K))
/*
diff --git a/arch/arm/cpu/mmu.h b/arch/arm/cpu/mmu.h
index e5bb37025f..2e425e092e 100644
--- a/arch/arm/cpu/mmu.h
+++ b/arch/arm/cpu/mmu.h
@@ -19,6 +19,15 @@ static inline void __mmu_cache_off(void) {}
static inline void __mmu_cache_flush(void) {}
#endif
+static inline unsigned long get_ttbr(void)
+{
+ unsigned long ttb;
+
+ asm volatile ("mrc p15, 0, %0, c2, c0, 0" : "=r"(ttb));
+
+ return ttb;
+}
+
static inline void set_ttbr(void *ttb)
{
asm volatile ("mcr p15,0,%0,c2,c0,0" : : "r"(ttb) /*:*/);
diff --git a/arch/arm/cpu/sm.c b/arch/arm/cpu/sm.c
index b0bf164057..cb0bac106b 100644
--- a/arch/arm/cpu/sm.c
+++ b/arch/arm/cpu/sm.c
@@ -187,8 +187,7 @@ int armv7_secure_monitor_install(void)
mmuon = get_cr() & CR_M;
vbar = get_vbar();
-
- asm volatile ("mrc p15, 0, %0, c2, c0, 0" : "=r"(ttb));
+ ttb = get_ttbr();
armv7_init_nonsec();
__armv7_secure_monitor_install();