aboutsummaryrefslogtreecommitdiff
path: root/src/kernel/boot.asm
diff options
context:
space:
mode:
authorMarvin Borner2019-09-19 19:56:59 +0200
committerMarvin Borner2019-09-19 20:05:38 +0200
commit05e1fedcc9cd30d1a34a65e640da45e980b4f859 (patch)
tree9cfb7620907ac126f26cdfe9363cb73ed74ea179 /src/kernel/boot.asm
parentffd82e18b5259fab477ad375a7af8550fac526d8 (diff)
Moved source to kernel directory
Diffstat (limited to 'src/kernel/boot.asm')
-rw-r--r--src/kernel/boot.asm50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/kernel/boot.asm b/src/kernel/boot.asm
new file mode 100644
index 0000000..eddd3a4
--- /dev/null
+++ b/src/kernel/boot.asm
@@ -0,0 +1,50 @@
+[BITS 32]
+global start
+start:
+ mov esp, _sys_stack ; Points stack to stack area
+ jmp stublet
+
+; Align with 4 Bytes
+ALIGN 4
+mboot:
+ ; Multiboot macros
+ MULTIBOOT_PAGE_ALIGN equ 1<<0
+ MULTIBOOT_MEMORY_INFO equ 1<<1
+ MULTIBOOT_AOUT_KLUDGE equ 1<<16
+ MULTIBOOT_HEADER_MAGIC equ 0x1BADB002
+ MULTIBOOT_HEADER_FLAGS equ MULTIBOOT_PAGE_ALIGN | MULTIBOOT_MEMORY_INFO | MULTIBOOT_AOUT_KLUDGE
+ MULTIBOOT_CHECKSUM equ -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)
+ EXTERN code, bss, end
+
+ ; GRUB Multiboot header
+ dd MULTIBOOT_HEADER_MAGIC
+ dd MULTIBOOT_HEADER_FLAGS
+ dd MULTIBOOT_CHECKSUM
+
+ ; AOUT kludge
+ dd mboot
+ dd code
+ dd bss
+ dd end
+ dd start
+
+; Endless loop
+stublet:
+ extern kernel_main
+ call kernel_main
+ jmp $
+
+%include "src/kernel/gdt/gdt.asm"
+
+%include "src/kernel/interrupts/idt.asm"
+
+%include "src/kernel/interrupts/isr.asm"
+
+%include "src/kernel/interrupts/irq.asm"
+
+%include "src/kernel/io/io.asm"
+
+; Store the stack
+SECTION .bss
+ resb 8192 ; Reserve 8KiB
+_sys_stack: \ No newline at end of file