about summary refs log tree commit diff stats
path: root/tools/iso/kernel.soso/boot.asm
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2020-01-01 18:22:19 -0800
committerKartik Agaram <vc@akkartik.com>2020-01-01 18:42:48 -0800
commit65409d2312e702a48d3cf5b32479d25266bda3c3 (patch)
tree62a7262fce61f2302109246da4536ce6f8e9ef80 /tools/iso/kernel.soso/boot.asm
parenta6da50ad30d2e1825575ffef497ab450a8f26e94 (diff)
downloadmu-65409d2312e702a48d3cf5b32479d25266bda3c3.tar.gz
5858
Move script to create a Soso boot image into a sub-directory.

I'm trying to streamline newcomer attention to just a couple of use cases.
Diffstat (limited to 'tools/iso/kernel.soso/boot.asm')
-rw-r--r--tools/iso/kernel.soso/boot.asm51
1 files changed, 51 insertions, 0 deletions
diff --git a/tools/iso/kernel.soso/boot.asm b/tools/iso/kernel.soso/boot.asm
new file mode 100644
index 00000000..773dd0f3
--- /dev/null
+++ b/tools/iso/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