summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Morris <[email protected]>2011-08-31 05:38:05 -0400
committerRobert Morris <[email protected]>2011-08-31 05:38:05 -0400
commit5c292b3d7167022e765c7228b0748cb50ab7d7f1 (patch)
treeff8bc3f52c2173052ec90b5e98f865c955f6b51f
parent5e083578278e340e0661f2dede68676432269f49 (diff)
downloadxv6-labs-5c292b3d7167022e765c7228b0748cb50ab7d7f1.tar.gz
xv6-labs-5c292b3d7167022e765c7228b0748cb50ab7d7f1.tar.bz2
xv6-labs-5c292b3d7167022e765c7228b0748cb50ab7d7f1.zip
simplify the end of entry.S
-rw-r--r--entry.S17
1 files changed, 8 insertions, 9 deletions
diff --git a/entry.S b/entry.S
index d228e88..f814aeb 100644
--- a/entry.S
+++ b/entry.S
@@ -51,15 +51,14 @@ entry:
orl $(CR0_PG|CR0_WP), %eax
movl %eax, %cr0
- # now switch to using addresses above KERNBASE
- # call addresses are pc-relative so we jump though this hoop:
- mov $relocated, %eax
- jmp *%eax
-relocated:
- # Set up the stack pointer and call into C.
+ # Set up the stack pointer.
movl $(stack + STACK), %esp
- call main
-spin:
- jmp spin
+
+ # Call main(), which switches to executing at
+ # high addresses. The indirect call is needed because
+ # the assembler produces a PC-relative instruction
+ # for a direct call.
+ mov $main, %eax
+ jmp *%eax
.comm stack, STACK