nuclear@0: #define MAGIC 0x1badb002 nuclear@0: #define FLAGS 0 nuclear@0: #define STACK_SIZE 0x4000 nuclear@0: nuclear@0: .text nuclear@0: .align 4 nuclear@1: nuclear@0: /* multiboot header */ nuclear@0: .long MAGIC nuclear@0: .long FLAGS nuclear@0: .long -(MAGIC + FLAGS) /* checksum */ nuclear@0: .fill 5, 4 /* fill out the rest with zeroes */ nuclear@0: nuclear@1: .globl kentry nuclear@0: kentry: nuclear@0: /* setup a temporary kernel stack */ nuclear@0: movl $(stack + STACK_SIZE), %esp nuclear@0: /* reset eflags register */ nuclear@0: pushl $0 nuclear@0: popf nuclear@0: /* call the kernel main function */ nuclear@0: call kmain nuclear@0: /* we dropped out of main, halt the CPU */ nuclear@0: cli nuclear@0: hlt nuclear@0: nuclear@0: /* space for the temporary kernel stack */ nuclear@0: .comm stack, STACK_SIZE