diff options
Diffstat (limited to 'ANDROID_3.4.5/arch/arm/kernel/process.c')
-rw-r--r-- | ANDROID_3.4.5/arch/arm/kernel/process.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/ANDROID_3.4.5/arch/arm/kernel/process.c b/ANDROID_3.4.5/arch/arm/kernel/process.c index 41aad9ed..df0dec8e 100644 --- a/ANDROID_3.4.5/arch/arm/kernel/process.c +++ b/ANDROID_3.4.5/arch/arm/kernel/process.c @@ -162,6 +162,21 @@ static void __soft_restart(void *addr) BUG(); } +void soft_restart_noirq(unsigned long addr)/*add by roger.*/
+{
+ u64 *stack = soft_restart_stack + ARRAY_SIZE(soft_restart_stack);
+
+ /* Disable the L2 if we're the last man standing. */
+ if (num_online_cpus() == 1)
+ outer_disable();
+
+ /* Change to the new stack and continue with the reset. */
+ call_with_stack(__soft_restart, (void *)addr, (void *)stack);
+
+ /* Should never get here. */
+ BUG();
+} + void soft_restart(unsigned long addr) { u64 *stack = soft_restart_stack + ARRAY_SIZE(soft_restart_stack); |