summaryrefslogtreecommitdiff
path: root/bootother.S
diff options
context:
space:
mode:
authorrtm <rtm>2006-06-24 22:47:06 +0000
committerrtm <rtm>2006-06-24 22:47:06 +0000
commit89eb5fbe6d120f19d69c3c84bed69611a746ff03 (patch)
tree1e186995c68932ff5b75f95c5dbdf7d5d307e7d3 /bootother.S
parent7df1310b2a8e0d825287d64d09c2c8d82e51907c (diff)
downloadxv6-labs-89eb5fbe6d120f19d69c3c84bed69611a746ff03.tar.gz
xv6-labs-89eb5fbe6d120f19d69c3c84bed69611a746ff03.tar.bz2
xv6-labs-89eb5fbe6d120f19d69c3c84bed69611a746ff03.zip
boot more than two CPUs, each on own initial stack
Diffstat (limited to 'bootother.S')
-rw-r--r--bootother.S15
1 files changed, 9 insertions, 6 deletions
diff --git a/bootother.S b/bootother.S
index cba4a5f..eee5ebe 100644
--- a/bootother.S
+++ b/bootother.S
@@ -9,6 +9,10 @@
* CS base set to startup memory address;
* CS limit set to 64KB;
* CPL and IP set to 0.
+ *
+ * mp.c causes each non-boot CPU in turn to jump to start.
+ * mp.c puts the correct %esp in start-4, and the place to jump
+ * to in start-8.
*
* Credit: Cliff Frey
*/
@@ -28,8 +32,8 @@ start: .code16 # This runs in real mode
movw %ax,%es # -> Extra Segment
movw %ax,%ss # -> Stack Segment
- # Set up the stack pointer, growing downward from 0x7000.
- movw $start,%sp # Stack Pointer
+ # Set up the stack pointer, growing downward from 0x7000-8.
+ movw $start-8,%sp # Stack Pointer
#### Switch from real to protected mode
#### The descriptors in our GDT allow all physical memory to be accessed.
@@ -61,10 +65,9 @@ protcseg:
movw %ax, %gs # -> GS
movw %ax, %ss # -> SS: Stack Segment
- # XXX hack
- movl 0x10018, %eax # elfhdr->entry (left over in scratch space)
- # subl $KERNBASE, %eax
- jmp *%eax # this jumps to _start in kern/entry.S
+ movl start-8, %eax
+ movl start-4, %esp
+ jmp *%eax
.p2align 2 # force 4 byte alignment
gdt: