mirror of https://gitee.com/openkylin/linux.git
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
|
||||
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 */
|
||||
__REFDATA
|
||||
.align 8
|
||||
|
|
Loading…
Reference in New Issue