-
Notifications
You must be signed in to change notification settings - Fork 0
/
boot.asm
35 lines (28 loc) · 898 Bytes
/
boot.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
MBALIGN equ 1 << 0 ; Flagi dla multiboot
MEMINFO equ 1 << 1
FLAGS equ MBALIGN | MEMINFO
MAGIC equ 0x1BADB002
CHECKSUM equ -(MAGIC + FLAGS) ; Suma kontrolna + flagi = 0
section .multiboot
align 4 ; wymóg multiboot
dd MAGIC ; układamy flagi
dd FLAGS
dd CHECKSUM
section .bss ; tworzymy stos
align 16 ; zgodnie z System V ABI stack musi być 16 bajtowo
; wyrównany
stack_bottom: ; dół stacku
resb 16384; to 16 KiB
stack_top: ; góra stacku
section .text
global _start:function (_start.end - _start) ; zadeklaruj symbol
_start:
mov esp, stack_top ; ustawiamy stos
extern kernel_main
call kernel_main ; wywołujemy jądro
cli ; jeśli jądro coś zwróci
.hang:
hlt ; czekaj na przerwanie, ale dlatego, że ich nie ma, będzie
; czekał w nieskończość
jmp .hang ; ale jeśli jednak wyjdzie z powodu ACPI, to wróć
.end: ; do symbolu