lkml.org 
[lkml]   [2002]   [Aug]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectSMP boot query
Hi,
Lets assume, boot processor has done all its
initialization and is booting the second processor.
In do_boot_cpu(), it calls fork_by_hand() and creates
an idle task for cpu#2 .
It then iniliazes all relevant fields of 'idle' task
for cpu#2.
It also does following
start_eip = setup_trampoline();
stack_start.esp = (void *) (1024 + PAGE_SIZE + (char
*)idle);

After doing lot of APIC related stuff, it sends
Startup IPI to cpu#2 to start booting from start_eip .


cpu#2, from trampoline code jumps to startup_32 and
from there to initialize_secondary.

initialize_secondary is

asm volatile(
"movl %0,%%esp\n\t"
"jmp *%1"
:
:"r" (current->thread.esp),"r"
(current->thread.eip));

Now my questions
1] what is trampoline ?
2] I did not understood, how 'current' above is set to
new idle task created in fork_by_hand (is some magic
done in start_stack.esp ?? )

-- Amol



__________________________________________________
Do You Yahoo!?
HotJobs - Search Thousands of New Jobs
http://www.hotjobs.com
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:28    [W:0.033 / U:1.384 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site