# HG changeset patch # User meillo@marmaro.de # Date 1257115800 -3600 # Node ID 99db6262c1572f22562462e954ba0a4d04dcbd46 initial commit with code from http://wiki.osdev.org/Bare_bones diff -r 000000000000 -r 99db6262c157 .hgignore --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Sun Nov 01 23:50:00 2009 +0100 @@ -0,0 +1,5 @@ +syntax: glob +*.o +kernel +os-isofiles +*.iso diff -r 000000000000 -r 99db6262c157 linker.ld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/linker.ld Sun Nov 01 23:50:00 2009 +0100 @@ -0,0 +1,28 @@ +ENTRY (loader) + +SECTIONS{ + . = 0x00200000; + + .multiboot :{ + *(.multiboot) + } + + .text :{ + *(.text) + } + + .rodata : { + *(.rodata) + } + + .data : { + *(.data) + } + + .bss : { + sbss = .; + *(COMMON) + *(.bss) + ebss = .; + } +} diff -r 000000000000 -r 99db6262c157 loader.s --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/loader.s Sun Nov 01 23:50:00 2009 +0100 @@ -0,0 +1,35 @@ +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