about summary refs log tree commit diff stats
path: root/kernel.soso/boot.asm
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2019-09-14 01:42:29 -0700
committerKartik Agaram <vc@akkartik.com>2019-09-14 01:45:55 -0700
commit46bb1d3157f9ad575c83a4bfa1e32b0d21bc8546 (patch)
tree28918f653d7cf970d33d5592047ef663289aca40 /kernel.soso/boot.asm
parentded2b24ce28f4a9df75ce40117f0f06f09574369 (diff)
downloadmu-46bb1d3157f9ad575c83a4bfa1e32b0d21bc8546.tar.gz
5650 - support a second OS: soso
https://github.com/ozkl/soso

+ Much smaller than Linux; builds instantly
+ Supports graphics
- No network support
- Doesn't work on a cloud server (yet?)
Diffstat (limited to 'kernel.soso/boot.asm')
-rw-r--r--kernel.soso/boot.asm51
1 files changed, 51 insertions, 0 deletions
diff --git a/kernel.soso/boot.asm b/kernel.soso/boot.asm
new file mode 100644
index 00000000..773dd0f3
--- /dev/null
+++ b/kernel.soso/boot.asm
@@ -0,0 +1,51 @@
+MBOOT_PAGE_ALIGN    equ 1<<0
+MBOOT_MEM_INFO      equ 1<<1
+MBOOT_USE_GFX       equ 1<<2
+MBOOT_HEADER_MAGIC  equ 0x1BADB002
+MBOOT_HEADER_FLAGS  equ MBOOT_PAGE_ALIGN | MBOOT_MEM_INFO | MBOOT_USE_GFX
+MBOOT_CHECKSUM      equ -(MBOOT_HEADER_MAGIC + MBOOT_HEADER_FLAGS)
+
+
+[BITS 32]
+
+
+section .multiboot
+align 4
+    dd  MBOOT_HEADER_MAGIC
+    dd  MBOOT_HEADER_FLAGS
+    dd  MBOOT_CHECKSUM
+    dd 0x00000000 ; header_addr
+    dd 0x00000000 ; load_addr
+    dd 0x00000000 ; load_end_addr
+    dd 0x00000000 ; bss_end_addr
+    dd 0x00000000 ; entry_addr
+    ; Graphics requests
+    dd 0x00000000 ; 0 = linear graphics
+    dd 1024
+    dd 768
+    dd 32
+
+section .bss
+align 16
+stack_bottom:
+resb 16384 ; 16 KiB
+stack_top:
+
+[GLOBAL _start]  ; this is the entry point. we tell linker script to set start address of kernel elf file.
+[EXTERN kmain]
+
+section .text
+
+_start:
+    mov esp, stack_top
+
+    ; push multiboot parameter to kmain()
+    push ebx
+
+    ; ...and run!
+    cli
+    call kmain
+
+    ;never reach here
+    cli
+    hlt