aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm64/kernel/process.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm64/kernel/process.c')
-rw-r--r--arch/arm64/kernel/process.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
index 1c0a9be2ffa8..fa6b5bba15f6 100644
--- a/arch/arm64/kernel/process.c
+++ b/arch/arm64/kernel/process.c
@@ -72,8 +72,17 @@ static void setup_restart(void)
72 72
73void soft_restart(unsigned long addr) 73void soft_restart(unsigned long addr)
74{ 74{
75 typedef void (*phys_reset_t)(unsigned long);
76 phys_reset_t phys_reset;
77
75 setup_restart(); 78 setup_restart();
76 cpu_reset(addr); 79
80 /* Switch to the identity mapping */
81 phys_reset = (phys_reset_t)virt_to_phys(cpu_reset);
82 phys_reset(addr);
83
84 /* Should never get here */
85 BUG();
77} 86}
78 87
79/* 88/*