***************************************************** Xeno Hypervisor (16/3/03) 'make': Builds ELF executable called 'image' in base directory 'make clean': removes *all* build and target files Booting secondary processors ---------------------------- It's twisty and turny, so this is (roughly) the code path: start_of_day (i386/setup.c) smp_boot_cpus (i386/smpboot.c) * initialises boot CPU data * parses APIC tables * for each cpu: do_boot_cpu (i386/smpboot.c) * forks a new idle process * points initial stack inside new task struct * points initial EIP at a trampoline in very low memory * frobs remote APIC.... On other processor: * trampoline sets GDT and IDT * jumps at main boot address with magic register value * after setting proper page and descriptor tables, jumps at... initialize_secondary (i386/smpboot.c) * simply reads ESP/EIP out of the (new) idle task * this causes a jump to... start_secondary (i386/smpboot.c) * reset all processor state * barrier, then write bitmasks to signal back to boot cpu * then barrel into... cpu_idle (i386/process.c)