SMP boot query

From: Amol Lad (
Date: Fri Aug 16 2002 - 02:21:09 EST

 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

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"

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
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

This archive was generated by hypermail 2b29 : Fri Aug 23 2002 - 22:00:11 EST