kernel/start32.asm

49 lines
1 KiB
NASM
Raw Normal View History

format elf
use32
2023-06-13 09:45:04 +03:00
2023-06-12 11:46:47 +03:00
MULTIBOOT_PAGE_ALIGN equ (1 shl 0)
MULTIBOOT_MEMORY_INFO equ (1 shl 1)
MULTIBOOT_VIDEO_REQUEST equ (0 shl 2)
2023-06-12 11:46:47 +03:00
MULTIBOOT_AOUT_KLUDGE equ (1 shl 16)
MULTIBOOT_HEADER_MAGIC equ 0x1BADB002
MULTIBOOT_HEADER_FLAGS equ MULTIBOOT_PAGE_ALIGN or MULTIBOOT_MEMORY_INFO or MULTIBOOT_VIDEO_REQUEST
2023-06-12 11:46:47 +03:00
MULTIBOOT_CHECKSUM equ -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)
.multiboot: align 4
dd MULTIBOOT_HEADER_MAGIC
dd MULTIBOOT_HEADER_FLAGS
dd MULTIBOOT_CHECKSUM
; dd 0 ; header address
; dd 0 ; load address
; dd 0 ; load end address
; dd 0 ; bss end address
; dd 0 ; entry address
; dd 0 ; video mode_type (0:fb, 1:txt) (set flags[2]!)
; dd 1024 ; video width
; dd 768 ; video height
2023-06-14 20:06:27 +03:00
; dd 24 ; video depth
2023-06-12 11:46:47 +03:00
section '.bss' writable align 16
stack_bottom:
rb 16384
stack_top:
2023-06-13 09:45:04 +03:00
section '.text' executable
public _start
extrn kmain
2023-06-12 11:46:47 +03:00
_start:
2023-06-13 09:45:04 +03:00
; Setup stack
mov esp, stack_top
2023-06-13 09:45:04 +03:00
2023-06-14 05:13:21 +03:00
; Call the main kernel function.
push ebx
push eax
2023-06-13 09:45:04 +03:00
call kmain
2023-06-12 11:46:47 +03:00
@@:
2023-06-13 09:45:04 +03:00
cli
hlt
jmp @b