This handler can be activated on multi-processor systems to boot only
the master CPU. All slave CPUs are halted by executing the WAIT
instruction. This is also useful to reduce the power consumption at
boot time.

Signed-off-by: Daniel Schwierzeck <daniel.schwierz...@googlemail.com>
---
 arch/mips/cpu/mips32/start.S |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/arch/mips/cpu/mips32/start.S b/arch/mips/cpu/mips32/start.S
index 9c1b2f7..b6cb4be 100644
--- a/arch/mips/cpu/mips32/start.S
+++ b/arch/mips/cpu/mips32/start.S
@@ -224,6 +224,14 @@ reset:
 
        setup_c0_status_reset
 
+       /* Set all slave CPUs in sleep mode */
+#ifdef CONFIG_SYS_MPS_SLAVE_CPU_SLEEP
+       mfc0    k0, CP0_EBASE
+       and     k0, EBASEF_CPUNUM
+       bne     k0, zero, slave_cpu_sleep
+        nop
+#endif
+
        /* Init Timer */
        mtc0    zero, CP0_COUNT
        mtc0    zero, CP0_COMPARE
@@ -383,3 +391,11 @@ romReserved:
 
 romExcHandle:
        b       romExcHandle
+
+       /* Additional handlers */
+#ifdef CONFIG_SYS_MPS_SLAVE_CPU_SLEEP
+slave_cpu_sleep:
+       wait
+       b       slave_cpu_sleep
+        nop
+#endif
-- 
1.7.7.2

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to