|
@@ -266,6 +266,19 @@ num_subarch_entries = (. - subarch_entries) / 4
|
|
|
jmp default_entry
|
|
|
#endif /* CONFIG_PARAVIRT */
|
|
|
|
|
|
+#ifdef CONFIG_HOTPLUG_CPU
|
|
|
+/*
|
|
|
+ * Boot CPU0 entry point. It's called from play_dead(). Everything has been set
|
|
|
+ * up already except stack. We just set up stack here. Then call
|
|
|
+ * start_secondary().
|
|
|
+ */
|
|
|
+ENTRY(start_cpu0)
|
|
|
+ movl stack_start, %ecx
|
|
|
+ movl %ecx, %esp
|
|
|
+ jmp *(initial_code)
|
|
|
+ENDPROC(start_cpu0)
|
|
|
+#endif
|
|
|
+
|
|
|
/*
|
|
|
* Non-boot CPU entry point; entered from trampoline.S
|
|
|
* We can't lgdt here, because lgdt itself uses a data segment, but
|