aboutsummaryrefslogtreecommitdiffstats
path: root/xen
diff options
context:
space:
mode:
authoriap10@labyrinth.cl.cam.ac.uk <iap10@labyrinth.cl.cam.ac.uk>2003-09-10 09:57:56 +0000
committeriap10@labyrinth.cl.cam.ac.uk <iap10@labyrinth.cl.cam.ac.uk>2003-09-10 09:57:56 +0000
commit0a8a407187f5cd087c4bffea79fcdbffbc700431 (patch)
tree38fcb6dc958d38b28812b2be4fc348a90f27e444 /xen
parent8fb06dd59d2124273a1bb3089e1b8e5d5a23dea1 (diff)
downloadxen-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/README37
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)