Mercurial > selfmade-os
view loader.s @ 0:99db6262c157
initial commit with code from http://wiki.osdev.org/Bare_bones
author | meillo@marmaro.de |
---|---|
date | Sun, 01 Nov 2009 23:50:00 +0100 |
parents | |
children |
line wrap: on
line source
global loader ; making entry point visible to linker extern kmain ; main is defined elsewhere ; setting up the Multiboot header - see GRUB docs for details MODULEALIGN equ 1<<0 ; align loaded modules on page ; boundaries MEMINFO equ 1<<1 ; provide memory map FLAGS equ MODULEALIGN | MEMINFO ; this is the Multiboot 'flag' field MAGIC equ 0x1BADB002 ; 'magic number' lets bootloader find the header CHECKSUM equ -(MAGIC + FLAGS) ; checksum required section .multiboot align 4 MultiBootHeader: dd MAGIC dd FLAGS dd CHECKSUM ; reserve initial kernel stack space STACKSIZE equ 0x4000 ; that's 16k. loader: mov esp, stack+STACKSIZE ; set up the stack push eax ; pass Multiboot magic number push ebx ; pass Multiboot info structure call kmain ; call kernel proper cli hang: hlt ; halt machine should kernel return jmp hang section .bss align 32 stack: resb STACKSIZE ; reserve stack on a quadword boundary