diff options
Diffstat (limited to 'arch/arm64/kernel/process.c')
-rw-r--r-- | arch/arm64/kernel/process.c | 11 |
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 | ||
73 | void soft_restart(unsigned long addr) | 73 | void 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 | /* |