aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/loader.s
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86_64/loader.s')
-rw-r--r--arch/x86_64/loader.s27
1 files changed, 27 insertions, 0 deletions
diff --git a/arch/x86_64/loader.s b/arch/x86_64/loader.s
new file mode 100644
index 0000000..b283a64
--- /dev/null
+++ b/arch/x86_64/loader.s
@@ -0,0 +1,27 @@
+.set MAGIC, 0x1badb002
+.set FLAGS, (1<<0 | 1<<1)
+.set CHECKSUM, -(MAGIC + FLAGS)
+
+.section .multiboot
+ .long MAGIC
+ .long FLAGS
+ .long CHECKSUM
+
+.section .text
+.extern kernel_main
+.global loader
+
+loader:
+ mov $kernel_stack, %esp
+ push %eax
+ push %ebx
+ call kernel_main
+
+_stop:
+ cli
+ hlt
+ jmp _stop
+
+.section .bss
+.space 2*1024*1024 # 2 MiB
+kernel_stack: