summaryrefslogtreecommitdiff
path: root/kernel/init/entry.asm
diff options
context:
space:
mode:
authorScott Gasch <[email protected]>2016-06-01 19:37:09 -0700
committerScott Gasch <[email protected]>2016-06-01 19:37:09 -0700
commit0a41dae5f406d498b5c9ab1542cb5660e0d982f6 (patch)
tree67ade9fe31cfd0458cc485e95550f7aaf14abdd1 /kernel/init/entry.asm
Initial checkin of toy OS project.HEADmaster
Diffstat (limited to 'kernel/init/entry.asm')
-rw-r--r--kernel/init/entry.asm23
1 files changed, 23 insertions, 0 deletions
diff --git a/kernel/init/entry.asm b/kernel/init/entry.asm
new file mode 100644
index 0000000..afb0434
--- /dev/null
+++ b/kernel/init/entry.asm
@@ -0,0 +1,23 @@
+[BITS 32]
+
+EXTERN KernelEntry
+GLOBAL StartOfKernelImage
+GLOBAL IdleLoop
+
+;;;
+;;; I put "entry.o" first in line at the linker so I am sure this function
+;;; gets put first in the kernel image. This is good because:
+;;;
+;;; 1. We know there is valid code at 0x00010000 when we jump here
+;;; 2. We can use the address of this function as the start of image
+;;; 3. We don't have to make sure main (or KernelEntry or whatever)
+;;; is always the first function in main.c
+;;;
+StartOfKernelImage:
+ jmp KernelEntry
+ ret
+
+IdleLoop:
+ sti
+ hlt
+ jmp IdleLoop