|
@@ -41,6 +41,7 @@
|
|
#include <asm/system_misc.h>
|
|
#include <asm/system_misc.h>
|
|
#include <asm/mach/time.h>
|
|
#include <asm/mach/time.h>
|
|
#include <asm/tls.h>
|
|
#include <asm/tls.h>
|
|
|
|
+#include "reboot.h"
|
|
|
|
|
|
#ifdef CONFIG_CC_STACKPROTECTOR
|
|
#ifdef CONFIG_CC_STACKPROTECTOR
|
|
#include <linux/stackprotector.h>
|
|
#include <linux/stackprotector.h>
|
|
@@ -95,7 +96,7 @@ static void __soft_restart(void *addr)
|
|
BUG();
|
|
BUG();
|
|
}
|
|
}
|
|
|
|
|
|
-void soft_restart(unsigned long addr)
|
|
|
|
|
|
+void _soft_restart(unsigned long addr, bool disable_l2)
|
|
{
|
|
{
|
|
u64 *stack = soft_restart_stack + ARRAY_SIZE(soft_restart_stack);
|
|
u64 *stack = soft_restart_stack + ARRAY_SIZE(soft_restart_stack);
|
|
|
|
|
|
@@ -104,7 +105,7 @@ void soft_restart(unsigned long addr)
|
|
local_fiq_disable();
|
|
local_fiq_disable();
|
|
|
|
|
|
/* Disable the L2 if we're the last man standing. */
|
|
/* Disable the L2 if we're the last man standing. */
|
|
- if (num_online_cpus() == 1)
|
|
|
|
|
|
+ if (disable_l2)
|
|
outer_disable();
|
|
outer_disable();
|
|
|
|
|
|
/* Change to the new stack and continue with the reset. */
|
|
/* Change to the new stack and continue with the reset. */
|
|
@@ -114,6 +115,11 @@ void soft_restart(unsigned long addr)
|
|
BUG();
|
|
BUG();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void soft_restart(unsigned long addr)
|
|
|
|
+{
|
|
|
|
+ _soft_restart(addr, num_online_cpus() == 1);
|
|
|
|
+}
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* Function pointers to optional machine specific functions
|
|
* Function pointers to optional machine specific functions
|
|
*/
|
|
*/
|