36 lines
831 B
ArmAsm
36 lines
831 B
ArmAsm
global loader ; symbole d'entrée pour le format ELF
|
|
|
|
; valeurs pour l'entête de multiboot
|
|
; (https://www.gnu.org/software/grub/manual/multiboot/html_node/Header-magic-fields.html#Header-magic-fields)
|
|
MAGIC_NUMBER equ 0x1BADB002 ; obligatoire
|
|
FLAGS equ 0x0 ; configuration de multiboot
|
|
CHECKSUM equ -MAGIC_NUMBER ; cf. documentation
|
|
|
|
KERNEL_STACK_SIZE equ 4096
|
|
|
|
section .bss
|
|
align 4
|
|
kernel_stack:
|
|
resb KERNEL_STACK_SIZE
|
|
|
|
section .text
|
|
align 4
|
|
dd MAGIC_NUMBER
|
|
dd FLAGS
|
|
dd CHECKSUM
|
|
|
|
loader:
|
|
; écrite la lettre A dans le framebuffer
|
|
; mov word [0xB8000], 0x0F41
|
|
; le registre esp contient le pointeur vers la stack
|
|
mov esp, kernel_stack + KERNEL_STACK_SIZE
|
|
extern kmain
|
|
call kmain
|
|
;extern fb_write_cell
|
|
;push dword 0x00
|
|
;push dword 0x0F
|
|
;push dword 0x41
|
|
;call fb_write_cell
|
|
mov eax, 0xCAFEBABE
|
|
.loop:
|
|
jmp .loop
|