Messages in this thread |  | | Date | Fri, 16 Aug 2002 00:21:09 -0700 (PDT) | From | Amol Lad <> | Subject | SMP 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/
|  |