/* my own bootloader */ .set MAGIC, 0x1BADB002 # magic number (lets bootloader find the header) .set ALIGN, 1<<0 # align loaded modules on page boundaries .set MEMINFO, 1<<1 # provide memory map .set FLAGS, ALIGN | MEMINFO # multiboot flag field .set CHECKSUM, -(MAGIC + FLAGS) # checksum of above, to prove we are multiboot .set STACKSIZE, 0x10000 # stack size /* section .text */ .text .globl _start .type _start,@function .align 4 /* standard multiboot header */ multiboot: .long MAGIC .long FLAGS .long CHECKSUM /* start routine */ _start: movl $(stack + STACKSIZE),%esp # set up stack call main # call main routine hlt # halt .size _start,.-_start /* stack */ .comm stack,STACKSIZE