aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/smpboot.c
diff options
context:
space:
mode:
authorGlauber Costa <gcosta@redhat.com>2008-05-27 21:22:54 -0400
committerIngo Molnar <mingo@elte.hu>2008-07-08 06:48:14 -0400
commit9cf4f298e29abba25c16679fe7be70898223167e (patch)
tree009af01f7c8001fb86fcfa25226d0c78248b83c9 /arch/x86/kernel/smpboot.c
parenta7bf0bd5e6af7fe69342dabf2a3b721f0163469a (diff)
x86: use stack_start in x86_64
call x86_64's init_rsp stack_start, just as i386 does. Put a zeroed stack segment for consistency. With this, we can eliminate one ugly ifdef in smpboot.c. Signed-off-by: Glauber Costa <gcosta@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/smpboot.c')
-rw-r--r--arch/x86/kernel/smpboot.c7
1 files changed, 1 insertions, 6 deletions
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index d3ad4e09455b..a71e3cad5470 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -714,11 +714,7 @@ wakeup_secondary_cpu(int phys_apicid, unsigned long start_eip)
714 * target processor state. 714 * target processor state.
715 */ 715 */
716 startup_ipi_hook(phys_apicid, (unsigned long) start_secondary, 716 startup_ipi_hook(phys_apicid, (unsigned long) start_secondary,
717#ifdef CONFIG_X86_64
718 (unsigned long)init_rsp);
719#else
720 (unsigned long)stack_start.sp); 717 (unsigned long)stack_start.sp);
721#endif
722 718
723 /* 719 /*
724 * Run STARTUP IPI loop. 720 * Run STARTUP IPI loop.
@@ -905,15 +901,14 @@ do_rest:
905 early_gdt_descr.address = (unsigned long)get_cpu_gdt_table(cpu); 901 early_gdt_descr.address = (unsigned long)get_cpu_gdt_table(cpu);
906 c_idle.idle->thread.ip = (unsigned long) start_secondary; 902 c_idle.idle->thread.ip = (unsigned long) start_secondary;
907 /* Stack for startup_32 can be just as for start_secondary onwards */ 903 /* Stack for startup_32 can be just as for start_secondary onwards */
908 stack_start.sp = (void *) c_idle.idle->thread.sp;
909 irq_ctx_init(cpu); 904 irq_ctx_init(cpu);
910#else 905#else
911 cpu_pda(cpu)->pcurrent = c_idle.idle; 906 cpu_pda(cpu)->pcurrent = c_idle.idle;
912 init_rsp = c_idle.idle->thread.sp;
913 load_sp0(&per_cpu(init_tss, cpu), &c_idle.idle->thread); 907 load_sp0(&per_cpu(init_tss, cpu), &c_idle.idle->thread);
914 initial_code = (unsigned long)start_secondary; 908 initial_code = (unsigned long)start_secondary;
915 clear_tsk_thread_flag(c_idle.idle, TIF_FORK); 909 clear_tsk_thread_flag(c_idle.idle, TIF_FORK);
916#endif 910#endif
911 stack_start.sp = (void *) c_idle.idle->thread.sp;
917 912
918 /* start_ip had better be page-aligned! */ 913 /* start_ip had better be page-aligned! */
919 start_ip = setup_trampoline(); 914 start_ip = setup_trampoline();