2021-02-03 15:59:42 +01:00
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
; vulcanOS Kernel ;
|
|
|
|
; Developed by Marco 'icebit' Cetica ;
|
|
|
|
; (c) 2019-2021 ;
|
|
|
|
; Released under GPLv3 ;
|
|
|
|
; https://github.com/ice-bit/vulcanos ;
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
2021-02-04 15:27:55 +01:00
|
|
|
GLOBAL kernel_loader
|
|
|
|
EXTERN kernel_main
|
2021-02-03 15:59:42 +01:00
|
|
|
[BITS 32] ; Ensure we are in protected mode
|
|
|
|
|
|
|
|
section .text
|
|
|
|
kernel_loader:
|
|
|
|
mov esp, kernel_stack + KERNEL_STACK_SZ ; Define stack pointer
|
|
|
|
push eax ; Set multiboot header register
|
2021-02-04 15:27:55 +01:00
|
|
|
call kernel_main ; Call kernel's main function
|
2021-02-03 15:59:42 +01:00
|
|
|
.loop:
|
2021-02-04 15:27:55 +01:00
|
|
|
jmp .loop ; If the kernel returns, go into an endless loop
|
|
|
|
; This will prevent the CPU to execure any non-kernel
|
|
|
|
; instructions.
|
2021-02-03 15:59:42 +01:00
|
|
|
|
|
|
|
KERNEL_STACK_SZ equ 4096 ; Stack size(4KiB)
|
|
|
|
|
|
|
|
section .bss
|
2021-02-04 15:27:55 +01:00
|
|
|
align 4
|
2021-02-03 15:59:42 +01:00
|
|
|
kernel_stack:
|
2021-02-04 15:27:55 +01:00
|
|
|
resb KERNEL_STACK_SZ ; Reserver 4KiB for kernel's stack
|