nuclear@0: #define MAGIC 0x1badb002 nuclear@16: /* flags with bit 1 set means we need memory info */ nuclear@16: #define FLAGS 2 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: 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@16: /* call the kernel main function. ebx points to the nuclear@16: * multiboot information structure */ nuclear@16: push %ebx 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