
*****************************************************
   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)
