aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVitaly Andrianov2014-08-04 07:12:20 -0500
committerVitaly Andrianov2015-01-21 07:53:12 -0600
commit1ff3e1a767e340c7cdd9fa0a63fbdb4a7c56ff68 (patch)
tree63e5bcf75a53ad29e0ede47247d541c86a56be70
parent6a7b41529cb59e9647873f44f3febf14ce3d3358 (diff)
downloadlinux-1ff3e1a767e340c7cdd9fa0a63fbdb4a7c56ff68.tar.gz
linux-1ff3e1a767e340c7cdd9fa0a63fbdb4a7c56ff68.tar.xz
linux-1ff3e1a767e340c7cdd9fa0a63fbdb4a7c56ff68.zip
arm: keystone2: use ks2 aliased physical address for cpu_reset
KS2 system uses physical addresses outside of first 4GB memory range. Once the cpu_reset() disables MMU that memory cannot be used. To let the cpu_reset() successfully restart CPU we need to run it from KS2 aliased memory address space. Signed-off-by: Vitaly Andrianov <vitalya@ti.com>
-rw-r--r--arch/arm/kernel/process.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
index ac4c2e5e17e..06f24f73110 100644
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -86,7 +86,11 @@ static void __soft_restart(void *addr)
86 flush_cache_all(); 86 flush_cache_all();
87 87
88 /* Switch to the identity mapping. */ 88 /* Switch to the identity mapping. */
89#ifdef CONFIG_ARCH_KEYSTONE
90 phys_reset = (phys_reset_t)(unsigned long)virt_to_idmap(cpu_reset);
91#else
89 phys_reset = (phys_reset_t)(unsigned long)virt_to_phys(cpu_reset); 92 phys_reset = (phys_reset_t)(unsigned long)virt_to_phys(cpu_reset);
93#endif
90 phys_reset((unsigned long)addr); 94 phys_reset((unsigned long)addr);
91 95
92 /* Should never get here. */ 96 /* Should never get here. */