x86-64, hotplug: Add start_cpu0() entry point to head_64.S
start_cpu0() is defined in head_64.S for 64-bit. The function sets up stack and jumps to start_secondary() for CPU0 wake up. Signed-off-by: Fenghua Yu <fenghua.yu@intel.com> Link: http://lkml.kernel.org/r/1352835171-3958-8-git-send-email-fenghua.yu@intel.com Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
This commit is contained in:
parent
6e32d479db
commit
42e78e9719
@ -252,6 +252,22 @@ ENTRY(secondary_startup_64)
|
|||||||
pushq %rax # target address in negative space
|
pushq %rax # target address in negative space
|
||||||
lretq
|
lretq
|
||||||
|
|
||||||
|
#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)
|
||||||
|
movq stack_start(%rip),%rsp
|
||||||
|
movq initial_code(%rip),%rax
|
||||||
|
pushq $0 # fake return address to stop unwinder
|
||||||
|
pushq $__KERNEL_CS # set correct cs
|
||||||
|
pushq %rax # target address in negative space
|
||||||
|
lretq
|
||||||
|
ENDPROC(start_cpu0)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* SMP bootup changes these two */
|
/* SMP bootup changes these two */
|
||||||
__REFDATA
|
__REFDATA
|
||||||
.align 8
|
.align 8
|
||||||
|
Loading…
Reference in New Issue
Block a user