diff options
author | iap10@labyrinth.cl.cam.ac.uk <iap10@labyrinth.cl.cam.ac.uk> | 2003-09-10 09:57:56 +0000 |
---|---|---|
committer | iap10@labyrinth.cl.cam.ac.uk <iap10@labyrinth.cl.cam.ac.uk> | 2003-09-10 09:57:56 +0000 |
commit | 0a8a407187f5cd087c4bffea79fcdbffbc700431 (patch) | |
tree | 38fcb6dc958d38b28812b2be4fc348a90f27e444 /xen | |
parent | 8fb06dd59d2124273a1bb3089e1b8e5d5a23dea1 (diff) | |
download | xen-0a8a407187f5cd087c4bffea79fcdbffbc700431.tar.gz xen-0a8a407187f5cd087c4bffea79fcdbffbc700431.tar.bz2 xen-0a8a407187f5cd087c4bffea79fcdbffbc700431.zip |
bitkeeper revision 1.419 (3f5ef5a4mQpbOFAoUevuy5GY5BPNKA)
Add READMEs, along with the xen-clone script, which is now far less
site-specific.
Diffstat (limited to 'xen')
-rw-r--r-- | xen/README | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/xen/README b/xen/README new file mode 100644 index 0000000000..ea14e52d86 --- /dev/null +++ b/xen/README @@ -0,0 +1,37 @@ + +***************************************************** + 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) |