summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/sleep-t2.S
diff options
context:
space:
mode:
authorScott Williams <scwilliams@nvidia.com>2011-07-19 15:19:42 -0700
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:46:49 -0800
commit0ebe761bd50b93a7593f5df374cf1c9b9be57a09 (patch)
treee67ca8f5a7cd5e7741def85081531d60898b4931 /arch/arm/mach-tegra/sleep-t2.S
parent08b30e31304a0fd8635631e692eaff5ce621c51e (diff)
ARM: tegra: Fail when tegra2_cpu_reset is called by CPU 0
CPU 0 must be the last CPU to shutdown since it's the only one that can perform CPU power gating or rail gating. Therefore, CPU 0 can reset CPU 1, but the reverse is not allowed. Change-Id: I61296ee49d219a67c1fb864badc1170cd4684f8e Signed-off-by: Scott Williams <scwilliams@nvidia.com> DW: Split into logical changes Signed-off-by: Dan Willemsen <dwillemsen@nvidia.com> Rebase-Id: R722033713d671fe702d9a7c0813993f9c7e6bd01
Diffstat (limited to 'arch/arm/mach-tegra/sleep-t2.S')
-rw-r--r--arch/arm/mach-tegra/sleep-t2.S4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/sleep-t2.S b/arch/arm/mach-tegra/sleep-t2.S
index 0eb51210822a..0f9ac080683f 100644
--- a/arch/arm/mach-tegra/sleep-t2.S
+++ b/arch/arm/mach-tegra/sleep-t2.S
@@ -105,10 +105,14 @@ ENDPROC(tegra2_sleep_reset)
* and puts the CPU in reset
* can be called on the current cpu or another cpu
* if called on the current cpu, does not return
+ * MUST NOT BE CALLED FOR CPU 0.
*
* corrupts r0-r3, r12
*/
ENTRY(tegra2_cpu_reset)
+ cmp r0, #0
+ moveq pc, lr @ must not be called for CPU 0
+
mov32 r3, TEGRA_PMC_VIRT
add r1, r3, #PMC_SCRATCH41
mov r12, #CPU_RESETTABLE